首页 > 编程语言 >tus java client 使用以及问题说明

tus java client 使用以及问题说明

时间:2023-10-27 14:36:40浏览次数:38  
标签:java tus upload client uploader new

代码来自官方参考,支持在使用的时候发现了一些问题记录下

参考代码

  • App.java
package org.example;
 
import io.tus.java.client.*;
 
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
 
public class App {
    public static void main(String[] args) throws IOException, io.tus.java.client.ProtocolException {
        TusClient client = new TusClient();
        client.setUploadCreationURL(new URL("http://localhost:1080/files/"));
        client.enableResuming(new TusURLMemoryStore());
        File file = new File("src/main/resources/my.mp4");
        final TusUpload upload = new TusUpload(file);
        Map<String,String> medata  = new HashMap<>();
        medata.put("filename", "my.mp4");
        medata.put("filetype", "video/mp4");
        System.out.println("Starting upload...");
        upload.setMetadata(medata);
        TusExecutor executor = new TusExecutor() {
            @Override
            protected void makeAttempt() throws IOException, io.tus.java.client.ProtocolException {
                // First try to resume an upload. If that's not possible we will create a new
                // upload and get a TusUploader in return. This class is responsible for opening
                // a connection to the remote server and doing the uploading.
                TusUploader uploader = client.resumeOrCreateUpload(upload);
                // Alternatively, if your tus server does not support the Creation extension
                // and you obtained an upload URL from another service, you can instruct
                // tus-java-client to upload to a specific URL. Please note that this is usually
                // _not_ necessary and only if the tus server does not support the Creation
                // extension. The Vimeo API would be an example where this method is needed.
                // TusUploader uploader = client.beginOrResumeUploadFromURL(upload, new URL("https://tus.server.net/files/my_file"));
                // Upload the file in chunks of 1KB sizes.
               //  此处是一个问题,因为我们进行上传的文件比较大,我设置了setChunkSize 为8M,但是tus 会提示offset 409 问题
                uploader.setChunkSize(1024*1024*8);
               // 解决方法,就是同时也设置setRequestPayloadSize 这样可以确保对于大文件上传没有问题
                uploader.setRequestPayloadSize(1024*1024*8);
                // Upload the file as long as data is available. Once the
                // file has been fully uploaded the method will return -1
                do {
                    // Calculate the progress using the total size of the uploading file and
                    // the current offset.
                    long totalBytes = upload.getSize();
                    long bytesUploaded = uploader.getOffset();
                    double progress = (double) bytesUploaded / totalBytes * 100;
                    System.out.printf("Upload at %06.2f%%.\n", progress);
                } while (uploader.uploadChunk() > -1);
                // Allow the HTTP connection to be closed and cleaned up
                uploader.finish();
                System.out.println("Upload finished.");
                System.out.format("Upload available at: %s", uploader.getUploadURL().toString());
            }
        };
        executor.makeAttempts();
    }
}

 

import io.tus.java.client.*;

说明

tus-java-client 维护并不是很频繁,同时对于TusURLStore 设计主要提供了基于内存的,如果我们有特殊场景可以自己扩展下

参考资料

https://github.com/tus/tus-node-server
https://github.com/tus/tus-java-client

标签:java,tus,upload,client,uploader,new
From: https://blog.51cto.com/rongfengliang/8056131

相关文章

  • tus-node-server 官方基于node 实现的tus server 1.0 发布
    tus-node-server是基于typescript开发的新的nodejsserver,通过拆分为独立的包(file,s3,gcs,server)包含的特性完全基于typescript开发拆分为了独立的包提供了新的events以及hooks升级了依赖包重新设计了存储file存储添加了过去扩展更好的周边集成(express,fastify。。。)参考使用s3v......
  • Java零基础入门-包装类
    前言Java是一种广泛使用的面向对象编程语言,它通过JVM(Java虚拟机)来实现跨平台。如果您刚刚开始学习Java编程语言,那么您可能会发现Java中的包装类是一个挑战。本文将对Java中的包装类进行详细介绍,以帮助您更好地理解Java编程语言。摘要在Java编程语言中,包装类用于将基本数据类型转......
  • 直播软件源码,java数据分页几种方式
    直播软件源码,java数据分页几种方式1.使用PageUtils Service: /**   *分页查询   *   *@paramparams查询条件   *@returnPageUtils   */  PageUtilsqueryPage(Map<String,Object>params);   ServiceImpl: Page<数据库对象实体>pa......
  • 一步步带你剖析Java中的Reader类
    本文分享自华为云社区《深入理解Java中的Reader类:一步步剖析》,作者:bug菌。前言在Java开发过程中,我们经常需要读取文件中的数据,而数据的读取需要一个合适的类进行处理。Java的IO包提供了许多类用于数据的读取和写入,其中Reader便是其中之一。本文将对Java中的Reader进行详细介绍,并......
  • java实现简易计算器
    Java简易计算器用java语言写的一个简易计算器,实现了最基本的+、-、*、/运算。先来看下效果:界面简述:整个面板的由一个JTextFiled组件+16个JButton组件构成,外加一个JPanel组件存放16个按钮,其布局为4x4的网格布局(GridLayout)。显示框与按钮面板放在了整个面板容器中,布局为BorderL......
  • javaweb--约束
    作用作用于表中列上的规则,用于限制加入表的数据约束的存在用于保证数据库中数据的完整性、有效性、正确性。约束的分类: auto_increment自增此列插入新一条数据时数值自动+1altertable表名modify列名数据类型约束 外键约束constraint外键名foreignkey外键列名......
  • Java大文件上传(秒传、分片上传、断点续传)
    一、秒传秒传就是不传,实现逻辑就是看数据库或者缓存里是否已经有这个文件了,有了,直接从已有的文件去拿就可以了(返回文件地址)。这里判断是否是相同文件,要用到信息摘要算法,详情可以参考:一文读懂当前常用的加密技术体系。信息摘要算法常常被用来保证信息的完整性,防止信息在传输过程中被......
  • Java实战:大文件分片上传与断点续传策略及其实际应用
    在许多应用场景中,处理大型文件上传可能成为开发人员面临的一项挑战。在网络环境不稳定,或者文件体积过大的情况下,传统的文件上传方式可能会出现问题。这时,文件分片上传和断点续传技术就显得至关重要。本文将向您展示如何使用Java实现这两种技术,并探讨其主要应用场景。文件分片上传是......
  • [26章]Java主流分布式解决方案多场景设计与实战
    点击下载:[26章]Java主流分布式解决方案多场景设计与实战 提取码:q5p5 Java主流分布式解决方案多场景设计与实战课程,计划26章,同步更新中。随着互联网数据井喷式的发展,分布式技术应运而生。分布式因其高性能、高可用、高扩展的特点,成为微服务项目的基石。本课程针对分布式六大主流问......
  • 甲骨文真的要开放Java EE?
    甲骨文表示,目前正在与可能的几个候选基金会,以及许可证持有者和社区在进行谈判。随着JavaEE8平台的确定,甲骨文在周四表示,目前正在考虑将JavaEnterpriseEdition技术转移到开源社区。甲骨文在其博客中说道,这次的转移,可能是正确的下一步行动,为了采用更灵活的流程,实现更灵......