Java进阶学习:将文件上传到七牛云中
通过本文,我们将讲述如何利用七牛云官方SDK,将我们的本地文件传输到其存储空间中去。
JavaSDK:https://developer.qiniu.com/kodo/sdk/1239/java#server-upload
官方SDK:https://developer.qiniu.com/sdk#official-sdk
创建空间及绑定域名
创建存储空间
这一步操作没有什么好说的,我们存储区域可以根据服务器的高频访问地域进行设置。
绑定域名
创建好存储空间后就会默认给你一个测试域名来使得你能通过外链访问你空间的内容。但是七牛云存储器作为我们应用的一部分,它的访问域名也应该遵循我们的域名规范,此时我们可以通过绑定域名来实现这样的效果,比如可以通过cloud.mrsaber.cn来访问七牛云存储中的文件。
点击图示位置中的自定义域名:
填写域名的相关信息及设置(域名必填,其他默认即可):
填写完以后将七牛云将会给你一个CNAME:
最后一步是,在你的域名厂商中添加一条二级解析域名,指向这个CNAME:
这样回域名管理中刷新一下,直到通知你域名创建成功以后即可。
Java测试上传文件
创建一个Java应用
由于要安装七牛云的SDK,我们将我们的Java应用转换为Maven应用。
项目上右键 Add Framework Support 然后选中Maven,点击OK
添加第三方类库
<dependencies>
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>7.2.11</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.3.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.6.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>happy-dns-java</artifactId>
<version>0.1.4</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
编写测试代码
import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth; import java.util.Scanner; public class Main { public static void main(String[] args) {
/*
* Configuration 表示带指定Zone对象的配置类
* 其中Zone 2 表示华南地区
* */
Configuration cfg = new Configuration(Zone.zone2());
UploadManager uploadManager = new UploadManager(cfg);
String accessKey = "XXXXX";
String secretKey ="YYYYY";
String bucket= "你当时建的存储空间的名称";
Scanner scanner = new Scanner(System.in);
String filePath = scanner.nextLine();
//Key 表示文件上传到服务器中的名称,为空的话默认为文件Hash值
String key = filePath.substring(filePath.lastIndexOf("/")+1);
Auth auth = Auth.create(accessKey,secretKey);
String upToken = auth.uploadToken(bucket);
try {
Response response = uploadManager.put(filePath,key,upToken);
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(),DefaultPutRet.class);
System.out.println(putRet.hash);
System.out.println(putRet.key);
} catch (QiniuException e) {
e.printStackTrace();
}
}
}
其中秘钥的位置在这里