七牛 java 上传文件方式_七牛云多种文件上传方式

/**

* 通过输入流上传

*

* @param bucketNm bucket的名称

* @param in 输入流

*/

public Result upload(String bucketNm, InputStream in, String key) throws QiniuException {

UploadManager uploadManager = getUploadManager();

//获取token

String token = getToken(bucketNm);

//上传输入流

Response response = uploadManager.put(in, key, token, null, null);

//解析上传成功的结果

DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);

return new Result(true, putRet.key);

}

/**

* 异步上传数据

*

* @param bucketNm bucket的名称

* @param data 上传的数据

* @param key 上传凭证

* @param params 自定义参数,如 params.put("x:foo", "foo")

* @param mime 文件类型

* @param checkCrc 是否开启crc校验

* @param upCompletionHandler 回调处理方法

* @throws IOException io异常

*/

public void asyncUpload(String bucketNm, final byte[] data, final String key, StringMap params,

String mime, boolean checkCrc, UpCompletionHandler upCompletionHandler) throws IOException {

UploadManager uploadManager = getUploadManager();

String token = getToken(bucketNm);

uploadManager.asyncPut(data, key, token, null, mime, checkCrc, upCompletionHandler);

}

/**

* 上传文件

*

* @param bucketNm String

* @param file File

* @return Result

*/

public Result upload(String bucketNm, File file) throws QiniuException {

UploadManager uploadManager = getUploadManager();

String token = getToken(bucketNm);

Response response = uploadManager.put(file.getAbsolutePath(), newName(file.getName()), token);

//解析上传成功的结果

DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);

return new Result(true, putRet.key);

}

/**

* 断点续传,分段上传方法

*

* @param bucketNm 存储区域

* @param file 文件

* @param key 文件别名

* @param params 文件名过滤属性

* @param mime 文件类型

* @param checkCrc crc文件校验是否开启

* @return 返回结果对象

*/

public Result uploadWithRecorder(String bucketNm, File file, String key, StringMap params, String mime, boolean checkCrc) throws Exception {

Result result;

UploadManager uploadManager = getUploadManagerWithRecorder();

String token = getToken(bucketNm);

Response response = uploadManager.put(file, key, token, params,

mime, checkCrc);

//解析上传成功的结果

DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);

result = new Result(true, putRet.key);

return result;

}

三种上传方式的情况比较说明:

比较三种上传方式:

同步上传:同步方式上传会等待任务执行完成后,才会执行下一个任务,效率较低

异步上传:提交任务后,不需要等待任务完成,直接结束,开始下一个任务,任务处理完成后会回调相关方法,返回处理结果

分段/断点上传:对于文件较大的情况,可以采用分段多线程(?)上传的方式,加快上传效率,当上传过程中出现网络中断,客户端服务端异常的情况,等待服务正常后,不需要从开始上传,可以从上次中断的地方上传,减少了重复上传时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值