又拍云存储Java SDK,基于 又拍云存储HTTP REST API接口 开发,适用于Java 6及以上版本。
maven
加入OSC仓库 nexus local private nexus http://maven.oschina.net/content/groups/public/ true false
加入依赖
<dependency>
<groupId>com.upyun</groupId>
<artifactId>java-sdk</artifactId>
<version>2.0.0</version>
</dependency>
其他方法
下载jar包,加入到类路径。
大家可通过又拍云主站创建自己的个性化空间。具体教程请参见“创建空间”。
UpYunClient client = UpYunClient.create("空间名称", "授权操作员名称", "操作员密码");
若不了解授权操作员
,请参见“授权操作员”
client.enableDebug();
client.timeout(60);
根据国内的网络情况,又拍云存储API目前提供了电信、联通网通、移动铁通三个接入点。
若没有明确进行设置,UpYun
默认将根据网络条件自动选择接入点。
接入点可使用相信的API来切换:
**注:**建议大家根据服务器网络状况,手动设置合理的接入点已获取最佳的访问速度。
UpYunClient client = UpYunClient.create("空间名称", "授权操作员名称", "操作员密码");
// 例1:直接将纯文本内容上传到又拍云
client.uploadFile(fileRemotePath, "test content");
// 例2:将文件上传到又拍云
File file = new File(localFilePath);
client.uploadFile(fileRemotePath, file);
http://空间名.b0.upaiyun.com/savePath
来访问文件不论上传文件还是图片,上传路径都有可能是多级的,如/a/b/c/a.txt
。而在上传前调用recursionMkDir
方法则会自动帮助你
递归创建这些目录。 只支持自动创建10级以内的父级目录。
client.recursionMkDir().uploadFile(fileRemotePath, file);
savePath
已经存在文件,将进行覆盖操作,并且是不可逆的。所以如果需要避免文件被覆盖的情况,可以先通过获取文件信息操作来判断是否已经存在旧文件。MD5
校验:若又拍云服务端收到的文件MD5值与用户设置的不一致,将返回 406 Not Acceptable
错误。对于需要确保上传文件的完整性要求的业务,可以设置该参数。 client.contentMD5(UpYun.md5(file));
upyun.setFileSecret("abc");
**特别说明**:
* 原图保护功能需要设置一个自定义的密钥(只有您自己知道,如上面的`abc`)。待文件保存成功后,将无法根据`http://空间名.b0.upaiyun.com/savePath`直接访问上传的文件,而是需要在 URL 后面加上`缩略图间隔标志符+密钥`进行访问。比如当[缩略图间隔标志符](http://wiki.upyun.com/index.php?title=如何使用自定义缩略图)为`!`,密钥为`abc`,上传的文件路径为`/dir/sample.jpg`,那么该图片的对外访问地址为: `http://空间名.b0.upaiyun.com/dir/sample.jpg!abc`
* **原图保护密钥若与[缩略图版本号](http://wiki.upyun.com/index.php?title=如何创建自定义缩略图)名称相同,则在对外访问时将被视为是缩略图功能,而原图将无法访问,请慎重使用。**
UpYunClient client = UpYunClient.create("空间名称", "授权操作员名称", "操作员密码");
// 例1:直接读取文本内容
String data = client.readFileText(fileRemotePath);
// 例2:下载文件
File file = new File(localFilePath); // 下载后文件的存储路径
boolean result = client.downloadFile(fileRemotePath, file);
UpYunNotFoundException
异常UpYunClient client = UpYunClient.create("空间名称", "授权操作员名称", "操作员密码");
FileItem item = client.getFileInfo(fileRemotePath);
UpYunClient client = UpYunClient.create("空间名称", "授权操作员名称", "操作员密码");
client.deleteFile(fileRemotePath);
UpYunNotFoundException
异常UpYunClient client = UpYunClient.create("空间名称", "授权操作员名称", "操作员密码");
// 方法1:创建一级目录
String dir1 = ;
client.unRecursionMkDir().createFolder("/a/");
// 方法2:创建多级目录,自动创建父级目录(最多10级)
client.recursionMkDir().createFolder("/a/b/c/d/");
/
结尾不允许创建目录
的错误client.deleteFolder("/a/b/c/d");
/dir1/dir2/dir3/
目录时,不能试图只传递/dir1/
来删除所有目录。dir
下还存在任何文件或子目录,将返回不允许删除
的错误。比如当存在/dir1/dir2/dir3/
目录时,将无法删除/dir1/dir2/
目录。List<FileItem> items = client.listFiles(fileRemotePath);
items
中文件的“名称”、“类型”(文件或目录)、“创建时间”和“文件大小”dir
目录不存在任何内容时,将直接返回一个空的ArrayList
dir
目录不存在时,则将返回不存在目录
的错误long usage = client.getBucketUsage();
byte
,比如1M
的使用量将以1048576
这样的数字返回对于图片的自定义处理,又拍云存储支持以下两种方式:
虽然两种方式都能够达到图片处理的效果,但存在以下区别:
区别点 | 自定义版本方式 | 参数处理方式 |
---|---|---|
是否保留原图 | 是,各个缩略图都在这个原图的基础上制作 | 否,只保留处理后的图片,若再使用缩略图版本号的方式来访问(这种方法是可行的),则将在处理后的图片基础上制作 |
空间使用量 | 以原图的大小计算使用量,后续各个版本的缩略图都不会计算在用户的空间使用量中 | 以处理后的图片大小计算使用量,大小视具体的处理参数而定 |
灵活性 | 可通过修改自定义版本的参数来满足变化的需求,参数修改后若没有自动刷新缓存,则可以手动强制刷新来确保新参数生效 | 只能调整代码中的处理参数,且原先保存的图片无法自动更新 |
我们更推荐大家使用自定义版本的方式对图片进行处理,但您可以根据自己业务的使用场景来选用合适的方式。
以下内容只是介绍“传递图片处理参数”的方法。
// 要传到upyun后的文件路径
String filePath = DIR_ROOT + "gmkerl.jpg";
// 本地待上传的图片文件
File file = new File(SAMPLE_PIC_FILE);
PictureParamsBuilder builder = PictureParamsBuilder.create();
builder.picThumbnail(ThumbnailType.VALUE_FIX_BOTH, 150, 150)
//图片质量
.picThumbnailQuality(95)
//锐化
.picThumbnailSharpen()
.picThumbnailName("small");
// 上传文件,并自动创建父级目录(最多10级)
PictureItem pictureItem = upYunClient.recursionMkDir()
.uploadPicture(filePath, file, builder);
PictureParamsBuilder
为设置图片的参数的构建器。
ThumbnailType
为缩略图的类型。
不是图片
的错误 // 要传到upyun后的文件路径
String filePath = DIR_ROOT + "crop.jpg";
// 本地待上传的图片文件
File file = new File(SAMPLE_PIC_FILE);
// 图片裁剪功能具体可参考:http://wiki.upyun.com/index.php?title=图片裁剪
// 设置图片裁剪,参数格式:x,y,width,height
PictureParamsBuilder builder = PictureParamsBuilder.createPicCutCutting(50, 50, 300, 300);
// 上传图片
PictureItem pictureItem = upYunClient.uploadPicture(filePath, file, builder);
x,y,width,height
。比如0,0,100,100
表示从左上角顶点裁剪100px × 100px
大小的图片 // 要传到upyun后的文件路径
String filePath = DIR_ROOT + "rotate.jpg";
// 本地待上传的图片文件
File file = new File(SAMPLE_PIC_FILE);
// 图片旋转功能具体可参考:http://wiki.upyun.com/index.php?title=图片旋转
PictureParamsBuilder builder = PictureParamsBuilder.createPicRotateAngle(PictureRotateAngle._90);
// 上传图片
PictureItem pictureItem = upYunClient.uploadPicture(filePath, file, builder);
auto
处理时需要图片包含EXIF
信息HTTP状态码 | 返回代码 | 描述 |
---|---|---|
400 | Bad Request | 错误请求(如 URL 缺少空间名) |
401 | Unauthorized | 访问未授权 |
401 | Sign error | 签名错误(操作员和密码,或签名格式错误) |
401 | Need Date Header | 发起的请求缺少 Date 头信息 |
401 | Date offset error | 发起请求的服务器时间错误,请检查服务器时间是否与世界时间一致 |
403 | Not Access | 权限错误(如非图片文件上传到图片空间) |
403 | File size too max | 单个文件超出大小(100Mb 以内) |
403 | Not a Picture File | 图片类空间错误码,非图片文件或图片文件格式错误。针对图片空间只允许上传 jpg/png/gif/bmp/tif 格式。 |
403 | Picture Size too max | 图片类空间错误码,图片尺寸太大。针对图片空间,图片总像素在 200000000 以内。 |
403 | Bucket full | 空间已用满 |
403 | Bucket blocked | 空间被禁用,请联系管理员 |
403 | User blocked | 操作员被禁用 |
403 | Image Rotate Invalid Parameters | 图片旋转参数错误 |
403 | Image Crop Invalid Parameters | 图片裁剪参数错误 |
404 | Not Found | 获取文件或目录不存在;上传文件或目录时上级目录不存在 |
406 | Not Acceptable(path) | 目录错误(创建目录时已存在同名文件;或上传文件时存在同名目录) |
503 | System Error | 系统错误 |
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。