upyun java_又拍云Java SDK使用

本文详细记录了如何接入并使用又拍云存储进行图片上传,包括在项目中引入依赖、初始化RestManager、调用上传接口及处理可能出现的问题。上传时需注意filePath应包含文件名及后缀,文件名可能需要进行编码处理,同时,相同文件名会覆盖原有文件。建议通过文件信息判断是否存在或使用唯一标识如UUID避免覆盖。
摘要由CSDN通过智能技术生成

上周写了一个项目,用到了图片上传和存储,使用的是又拍云的云存储,本文记录一下接入的流程和一些注意事项。

接入

pom 文件中引入依赖:

com.upyun

java-sdk

4.2.0

使用

初始化 RestManager

RestManager manager = new RestManager("空间名称", "操作员名称", "操作员密码");

其中,空间名称即为云存储的「服务名称」。

上传文件

public Response writeFile(String filePath, byte[] data, Map params)

public Response writeFile(String filePath, File file, Map params)

public Response writeFile(String filePath, InputStream inputStream, Map params)filePath 是保存到又拍云存储的文件路径,以 / 开始。

第二个参数 接受 InputStream 、 File 和 byte[] 三种类型的数据。

params 上传额外可选参数,详见 api 文档。

返回结果

Response response = manager.writeFile(filePath, file, params);

如果 response.isSuccessful() 为 true,则表示上传成功,通过又拍云绑定的域名 + 定义文件的路径 即可访问文件。例如我的 filePath 是 /test/1.jpg,又拍云绑定的域名是 https://cdn.juemuren4449.com,那么文件的链接即为 https://cdn.juemuren4449.com/test/1.jpg。

遇到的问题

如果上传有错误,可以通过查看 response.code() 对照下面的错误码表进行问题排查。

filePath 问题

第一次上传的时候,我的 filePath 只写了目录名 /test,运行之后报错为 406。然后我才明白,这个 filePath 其实说白了就是把文件放到又拍云的目录加文件名,例如 /test/1.jpg,就是 test 目录下的 1.jpg 文件,文件路径的后缀要和文件的后缀一致。

编码问题

我传输的文件是图片,且不会重复,所以我直接把 file.getName() 作为文件名,测试的时候一切正常,但是程序在 Windows 下会提示 path encoding should be utf8,错误码是 40000030。

最后通过 URLEncoder.encode(file.getName(), "UTF-8")) 解决了问题,如果文件名有特殊字符,也推荐先进行 encode。当然,也可以自定义文件名。

文件覆盖问题若空间内指定目录已存在相同文件,则会被覆盖,且不可逆。

上传的时候要特别注意,官方推荐可以通过获取文件信息来判断是否已存在相同文件,我个人认为如果对文件名没有要求,可以使用 UUID 或者 MD5 作为文件名,也可以避免文件名重复。

更多各语言版本的 SDK 请查看:「存储 & 处理 SDK」。

相关阅读:

欢迎访问我的个人博客:掘墓人的小铲子

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值