# java-sdk
**Repository Path**: hanbition/java-sdk
## Basic Information
- **Project Name**: java-sdk
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2021-09-25
- **Last Updated**: 2021-09-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# UPYUN Java SDK
[](https://travis-ci.org/upyun/java-sdk)
又拍云存储 Java SDK,基于 [又拍云存储 HTTP REST API 接口](http://docs.upyun.com/api/rest_api/) , [又拍云 HTTP FORM API 接口](http://docs.upyun.com/api/form_api/) 和 [又拍云云处理文档 ](http://docs.upyun.com/cloud/)开发,适用于 Java 7 及以上版本。
## Maven 安装
```
com.upyun
java-sdk
4.2.3
```
## 目录
* [云存储基础接口](#云存储基础接口)
* [初始化 RestManager](#初始化RestManager)
* [创建目录](#创建目录)
* [删除目录](#删除目录)
* [获取目录文件列表](#获取目录文件列表)
* [上传文件](#上传文件)
* [获取文件信息](#获取文件信息)
* [获取使用量信息](#获取使用量信息)
* [下载文件](#下载文件)
* [删除文件](#删除文件)
* [移动文件](#移动文件)
* [复制文件](#复制文件)
* [串行式断点续传](#串行式断点续传)
* [并行式断点续传](#并行式断点续传)
* [表单上传接口](#表单上传接口)
* [初始化 FormUploader](#初始化FormUploader)
* [表单上传文件](#表单上传文件)
* [表单上传作图](#表单上传作图)
* [错误说明](#错误说明)
* [云处理](#云处理)
* [异步音视频处理](#异步音视频处理)
* [查询处理进度](#查询处理进度)
* [查询处理结果](#查询处理结果)
* [压缩解压缩](#压缩解压缩)
* [异步文件拉取](#异步文件拉取)
* [文档转换](#文档转换)
* [图片拼接](#图片拼接)
## 云存储基础接口
### 初始化 RestManager
```Java
RestManager manager = new RestManager("空间名称", "操作员名称", "操作员密码");
```
**可选属性:**
- 设置代理
```Java
manager.setProxy(proxy);
```
- 手动设置超时时间:默认为30秒
```Java
manager.setTimeout(60);
```
- 选择最优的接入点
```Java
manager.setApiDomain(RestManager.ED_AUTO);
```
>根据国内的网络情况,又拍云存储 API 目前提供了电信、联通网通、移动铁通三个接入点。可以通过`setApiDomain()`方法进行设置,默认将根据网络条件自动选择接入点。
> 接入点有四个值可选:
```Java
RestManager.ED_AUTO //根据网络条件自动选择接入点
RestManager.ED_TELECOM //电信接入点
RestManager.ED_CNC //联通网通接入点
RestManager.ED_CTT //移动铁通接入点
```
_**注:**建议大家根据服务器网络状况,手动设置合理的接入点已获取最佳的访问速度_
---
### 创建目录
**方法原型:**
```Java
public Response mkDir(String path);
```
**参数说明:**
* `path` 目录路径,以`/`结尾
**返回值说明:**
* 返回 Response
**举例说明:**
```Java
String path = "/dir1/dir2/";
// 创建目录,自动创建父级目录
Response result = manager.mkDir(path);
```
---
### 删除目录
**方法原型:**
```Java
public Response rmDir(String path);
```
**参数说明:**
* `path` 目录路径
**返回值说明:**
* 结果为 `true` 删除目录成功
* 若待删除的目录 `path` 下还存在任何文件或子目录,将返回『不允许删除』的错误
**举例说明:**
```Java
String path = "/dir1/dir2/";
// 删除目录
Response result = manager.rmDir(path);
```
---
### 获取目录文件列表
**方法原型:**
```Java
public Response readDirIter(String path,Map params);
```
**参数说明:**
* `path` 目录路径
* `params` 可选参数
**举例说明:**
```Java
String path = "/dir1/";
// 获取目录中文件列表
Response response = manager.readDirIter(path,null);
System.out.println(response.body().string());
```
---
### 上传文件
**方法原型:**
```Java
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 文档](https://help.upyun.com/knowledge-base/rest_api/#e4b88ae4bca0e69687e4bbb6)。
**返回值说明:**
* response.isSuccessful() 结果为 `true` 上传文件成功
**举例说明:**
```Java
// 例1:上传纯文本内容,自动创建父级目录
String str = "Hello RestManager";
Map params = new HashMap();
// 设置待上传文件的 Content-MD5 值
// 如果又拍云服务端收到的文件MD5值与用户设置的不一致,将回报 406 NotAcceptable 错误
params.put(PARAMS.CONTENT_MD5.getValue(), UpYunUtils.md5(file, 1024));
// 设置待上传文件的"访问密钥"
// 注意:
// 仅支持图片空!,设置密钥后,无法根据原文件URL直接访问,需带URL后面加上(缩略图间隔标志符+密钥)进行访问
// 举例:
// 如果缩略图间隔标志符为"!",密钥为"bac",上传文件路径为"/folder/test.jpg",
// 那么该图片的对外访问地址为:http://空间域名 /folder/test.jpg!bac
params.put(PARAMS.CONTENT_SECRET.getValue(), "bac");
Response result = manager.writeFile("/path/to/file", str, params);
```
_**注:**
若空间内指定目录已存在相同文件,则会被覆盖,且**不可逆**。若要避免此情况,可以先通过[获取文件信息](#获取文件信息)来判断是否已经存在相同文件_
---
### 获取文件信息
**方法原型:**
```Java
public Response getFileInfo(String filePath)
```
**参数说明:**
* `filePath` 又拍云中文件的路径
**返回值说明:**
* response.headers 信息:
> * `x-upyun-file-type` 文件类型
> * `x-upyun-file-size` 文件大小
> * `x-upyun-file-date` 创建日期
> * `Content-Md5 ` 文件的 MD5 值
**举例说明:**
```Java
String filePath = "/path/to/file";
System.out.println(filePath + " 的文件信息:" + restManager.getFileInfo(filePath).headers());
```
---
### 获取使用量信息
**方法原型:**
```Java
public Resoponse getBucketUsage();
```
**举例说明:**
```Java
Response response = restManager.getBucketUsage();
System.out.println("空间总使用量:" + response.body().string() + "B");
```
**返回值说明:**
* 返回值单位为 Byte
---
### 下载文件
**方法原型:**
```Java
public Response readFile(String filePath);
```
**参数说明:**
* `filePath` 文件在又拍云存储中的路径
*
**返回值说明:**
* response.body() 包含文件流信息
**举例说明:**
```Java
// 直接打印文本内容
String remoteFilePath = "/path/to/file";
System.out.println(filePath + " 的文件内容:" + response.body().string());
```
---
### 删除文件
**方法原型:**
```Java
public Response deleteFile(String filePath,Map params);
```
**参数说明:**
* `filePath` 文件在又拍云的路径
* `params ` 可选参数 可为 null
**返回值说明:**
* response.isSuccessful() 结果为 `true` 删除文件成功
**举例说明:**
```Java
Response response = restManager.deleteFile(filePath, null);
System.out.println(filePath + " 删除" + isSuccess(response));
```
### 移动文件
**方法原型:**
```Java
public Response moveFile(String path, String sourcePath, Map params);
```
**参数说明:**
* `path` 目标路径
* `sourcePath ` 源文件路径
**返回值说明:**
* 返回 Response
### 复制文件
**方法原型:**
```Java
public Response copyFile(String path, String sourcePath, Map params);
```
**参数说明:**
* `path` 目标路径
* `sourcePath ` 源文件路径
**返回值说明:**
* 返回 Response
---
### 串行式断点续传
初始化 SerialUploader
```java
SerialUploader resume = new SerialUploader("空间名称", "操作员名称", "操作员密码")
```
设置上传进度监听
```java
resume.setOnProgressListener(new BaseUploader.OnProgressListener()
```
设置 MD5 校验
```java
resume.setCheckMD5(true);
```
开始上传
```java
public boolean upload(String filePath, String uploadPath,Map params)
```
暂停
```java
public boolean pause()
```
继续
```java
public boolean resume()
```
---
### 并行式断点续传
初始化 ParallelUploader
```java
ParallelUploader paralleUploader = new ParallelUploader("空间名称", "操作员名称", "操作员密码")
```
设置上传进度监听
```java
paralleUploader.setOnProgressListener(new ResumeUploader.OnProgressListener()
```
设置 MD5 校验
```java
paralleUploader.setCheckMD5(true);
```
设置 并行数 校验
```java
paralleUploader.setParallel(4);
```
开始上传
```java
public boolean upload(String filePath, String uploadPath,Map params)
```
暂停
```java
public boolean pause()
```
继续
```java
public boolean resume()
```
**参数说明:**
* `filePath ` 待上传文件路径
* `uploadPath ` 上传至空间目录
* `params ` 通用可选上传参数见文档 可为null
**详细示例:**
见 [ResumeUploadDemo](https://github.com/upyun/java-sdk/blob/master/src/main/java/demo/ResumeUploadDemo.java)
---
## 表单上传接口
### 初始化 FormUploader
```java
public FormUploader(String bucketName, String userName, String password)
```
参数说明:
* `bucketName ` 空间名
* `userName ` 操作员
* `password ` 密码
**可选属性:**
- 手动设置超时时间:默认为30秒
```java
public void setTimeout(int timeout)
```
- 选择最优的接入点,默认 `v0.api.upyun.com`
```Java
public void setApiDomain(String domain)
```
- 选择默认过期时间,默认1800秒
```java
public void setExpiration(int expiration)
```
### 表单上传文件
**方法原型:**
```java
public Result upload(Map params, File file)
public Result upload(Map params, byte[] datas)
```
**参数说明:**
* `params ` 参数键值对
* `file ` 上传文件
* `datas ` 上传数组
参数键值对中 `Params.SAVE_KEY` 为必选参数,其他可选参数见 [Params](https://github.com/upyun/java-sdk/blob/master/src/main/java/com/upyun/Params.java) 或者[官网 API 文档](http://docs.upyun.com/api/form_api/#api_1)。
**返回说明:**
> * `Result.Succeed` 是否成功
> * `Result.code` 返回http消息码
> * `Result.msg` 返回消息
**举例说明:**
表单上传示例可见[ FormUploadDemo ](https://github.com/upyun/java-sdk/blob/master/src/main/java/demo/FormUploadDemo.java)。
###表单上传作图
**上传同步作图**
```java
private static void testSync() {
//初始化uploader
FormUploader uploader = new FormUploader(BUCKET_NAME, APIKEY, null);
//初始化参数组 Map
final Map paramsMap = new HashMap();
//添加 SAVE_KEY 参数
paramsMap.put(Params.SAVE_KEY, savePath);
//添加同步上传作图参数 X_GMKERL_THUMB
paramsMap.put(Params.X_GMKERL_THUMB, "/fw/300/unsharp/true/quality/80/format/png");
//打印结果
System.out.println(uploader.upload(paramsMap, file));
}
```
`paramsMap` 添加键值对,`Params.X_GMKERL_THUMB` 为 key,作图规则见[上传作图 API](http://docs.upyun.com/cloud/image/#_2)
**上传异步作图**
```java
private static void testAsync() {
//uploader
FormUploader uploader = new FormUploader(BUCKET_NAME, APIKEY, null);
//初始化参数组 Map
final Map paramsMap = new HashMap();
//添加 SAVE_KEY 参数
paramsMap.put(Params.SAVE_KEY, savePath);
//初始化JSONArray
JSONArray array = new JSONArray();
//初始化JSONObject
JSONObject json = new JSONObject();
//json 添加 name 属性
json.put("name", "thumb");
//json 添加 X_GMKERL_THUMB 属性
json.put(Params.X_GMKERL_THUMB, "/fw/300/unsharp/true/quality/80/format/png");
//json 添加 save_as 属性
json.put("save_as", "/path/to/fw_100.jpg");
//json 添加 notify_url 属性
json.put("notify_url","http://httpbin.org/post");
//将json 对象放入 JSONArray
array.put(json);
//添加异步作图参数 APPS
paramsMap.put(Params.APPS, array);
//打印结果
System.out.println(uploader.upload(paramsMap, file));
}
```
`paramsMap` 添加键值对,`Params.APPS` 为 key,作图规则见[上传作图 API](http://docs.upyun.com/cloud/image/#_2)
## 处理
### 异步音视频处理
#### 初始化 MediaHandler
```java
MediaHandler handle = new MediaHandler(BUCKET_NAME, OPERATOR_NAME, OPERATOR_PWD);
```
参数说明:
* `BUCKET_NAME ` 空间名
* `OPERATOR_NAME ` 操作员名称
* `OPERATOR_PWD ` 操作员密码
**可选属性:**
- 手动设置超时时间:默认为30秒
```java
public void setTimeout(int timeout)
```
### 发起异步处理请求
**方法原型:**
```java
public Result process(Map params) throws IOException
```
**参数说明:**
* `params ` 参数键值对
详细参数可见 [MediaHandler](https://github.com/upyun/java-sdk/blob/master/src/main/java/com/upyun/MediaHandler.java) 或者[官网 API 文档](http://docs.upyun.com/cloud/av/#_3)。
**返回说明:**
> * `Result.Succeed` 是否成功
> * `Result.code` 返回http消息码
> * `Result.msg` 返回消息
**举例说明:**
示例可见[ testMediaProcess ](https://github.com/upyun/java-sdk/blob/master/src/main/java/demo/MediaHandlerDemo.java)。
### 查询处理进度
**方法原型:**
```java
public Result getStatus(Map params) throws IOException
```
**参数说明:**
* `params ` 参数键值对 包括 `bucket_name` 和 `task_ids `
**返回说明:**
同上
**举例说明:**
示例可见[ testMediaStatus ](https://github.com/upyun/java-sdk/blob/master/src/main/java/demo/MediaHandlerDemo.java)。
### 查询处理结果
**方法原型:**
```java
public Result getResult(Map params) throws IOException
```
**参数说明:**
同上
**返回说明:**
同上
**举例说明:**
示例可见[ testMediaResult ](https://github.com/upyun/java-sdk/blob/master/src/main/java/demo/MediaHandlerDemo.java)。
### 压缩解压缩
#### 初始化 CompressHandler
```java
MediaHandler handle = new MediaHandler(BUCKET_NAME, OPERATOR_NAME, OPERATOR_PWD);
```
参数说明:
* `BUCKET_NAME ` 空间名
* `OPERATOR_NAME ` 操作员名称
* `OPERATOR_PWD ` 操作员密码
#### 发起异步处理请求
```java
public Result process(Map params) throws IOException
```
**参数说明:**
* `params ` 参数键值对
详细参数可见 [CompressHandler](https://github.com/upyun/java-sdk/blob/master/src/main/java/com/upyun/CompressHandler.java) 或者[官网 API 文档](http://docs.upyun.com/cloud/unzip/)。
详细示例见 [CompressDemo](https://github.com/upyun/java-sdk/blob/master/src/main/java/demo/CompressDemo.java)
### 异步文件拉取
#### 初始化 CompressHandler
```java
MediaHandler handle = new MediaHandler(BUCKET_NAME, OPERATOR_NAME, OPERATOR_PWD);
```
参数说明:同上
#### 发起异步处理请求
```java
public Result process(Map params) throws IOException
```
**参数说明:**
* `params ` 参数键值对
详细参数可见 [PullingHandler](https://github.com/upyun/java-sdk/blob/master/src/main/java/com/upyun/PullingHandler.java) 或者[官网 API 文档](http://docs.upyun.com/cloud/spider/)。
详细示例见 [PullingDemo](https://github.com/upyun/java-sdk/blob/master/src/main/java/demo/PullingDemo.java)
### 文档转换
#### 初始化 CompressHandler
```java
ConvertHandler handle = new ConvertHandler(BUCKET_NAME, OPERATOR_NAME, OPERATOR_PWD);
```
参数说明:同上
#### 发起异步处理请求
```java
public Result process(Map params) throws IOException
```
**参数说明:**
* `params ` 参数键值对
详细参数可见 [ConvertHandler](https://github.com/upyun/java-sdk/blob/master/src/main/java/com/upyun/ConvertHandler.java) 或者[官网 API 文档](http://docs.upyun.com/cloud/uconvert/)。
详细示例见 [JigsawDemo](https://github.com/upyun/java-sdk/blob/master/src/main/java/demo/ConvertDemo.java)
### 图片拼接
#### 初始化 JigsawHandler
```java
JigsawHandler handle = new JigsawHandler(BUCKET_NAME, OPERATOR_NAME, OPERATOR_PWD);
```
参数说明:同上
#### 发起异步处理请求
```java
public Result process(Map params) throws IOException
```
**参数说明:**
* `params ` 参数键值对
详细参数可见 [JigsawHandler](https://github.com/upyun/java-sdk/blob/master/src/main/java/com/upyun/JigsawHandler.java) 或者[官网 API 文档](http://docs.upyun.com/cloud/async_image/)。
详细示例见 [JigsawDemo](https://github.com/upyun/java-sdk/blob/master/src/main/java/demo/JigsawDemo.java)
##错误说明
请参照 [API 错误码表](http://docs.upyun.com/api/errno/#api)