昨天完成了阿里云的OSS的文件上传和下载
前面把七牛云的上传功能实现了(今天把七牛云的下载功能实现)
阿里和七牛云的上传和下载模块都能实现(后面就可以实现数据迁移了)
import com.qiniu.util.Auth;
public class QiniuDownload {
//设置好账号的ACCESS_KEY和SECRET_KEY
String ACCESS_KEY = "******";
String SECRET_KEY = "******";
//密钥配置
Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
//构造私有空间的需要生成的下载的链接
String URL = "******";
public static void main(String args[]) {
new QiniuDownload().download();
}
public void download() {
//String encodedUrl = URLEncoder.encode(URL, "utf-8");
//调用privateDownloadUrl方法生成下载链接,第二个参数可以设置Token的过期时间
String downloadRUL = auth.privateDownloadUrl(URL, 3600);
System.out.println(downloadRUL);
}
}
控制台打印的下载的URL
访问资源的下载的URL
可以访问资源的链接
编写阿里云获取文件文档类名
//获取阿里全部的文件名
public void getAllFileName() {
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "******";
// 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建。
String accessKeyId = "******";
String accessKeySecret = "******";
String bucket="******";
// 创建OSSClient实例。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 列举文件。 如果不设置KeyPrefix,则列举存储空间下所有的文件。KeyPrefix,则列举包含指定前缀的文件。
ObjectListing objectListing = ossClient.listObjects(bucket);
List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
for (OSSObjectSummary s : sums) {
System.out.println("\t" + s.getKey());
}
// 关闭OSSClient。
ossClient.shutdown();
}
运行测试一下
后台打印文件名称的信息
七牛云获取全部的文件名
//获取七牛云全部的文件名
public void getAllFileName1() {
//构造一个带指定Zone对象的配置类
Configuration cfg = new Configuration(Zone.zone0());
//...其他参数参考类注释
String accessKey = "******";
String secretKey = "******";
String bucket = "******";
Auth auth = Auth.create(accessKey, secretKey);
BucketManager bucketManager = new BucketManager(auth, cfg);
//文件名前缀
String prefix = "";
//每次迭代的长度限制,最大1000,推荐值 1000
int limit = 1000;
//指定目录分隔符,列出所有公共前缀(模拟列出目录效果)。缺省值为空字符串
String delimiter = "";
//列举空间文件列表
BucketManager.FileListIterator fileListIterator = bucketManager.createFileListIterator(bucket, prefix, limit, delimiter);
while (fileListIterator.hasNext()) {
//处理获取的file list结果
FileInfo[] items = fileListIterator.next();
for (FileInfo item : items) {
System.out.println(item.key);
System.out.println(item.hash);
System.out.println(item.fsize);
System.out.println(item.mimeType);
System.out.println(item.putTime);
System.out.println(item.endUser);
}
}
}
测试一下
打印了详细的信息(现在我的云服务器里面只只存了一张图片)
尝试数据迁移
准备单个的测试
上传的图片没有数据(可能是这个原因)
报错异常
这个问题解决不了(感觉是下载的类的编写得到类型不对)
我决定重写再次去测试一下这个,把这个弄透彻一点,上次那个阿里上传的问题,找了三天左右的问题,后面终于找到的问题的地方
今天的收获:终于有这个数据迁移的思路,先下载文件,将数据流转换上传到另一个服务器上面,就是下载的流的问题,应该的转换的问题,那个每次就是在String类型和MultipartFile类型转换,尝试再次解决 这个问题
今天的遇到困难:就是数据的迁移上传下载文件流不一样,强转还是不能解决问题,接下来尝试一下,继续寻找方法解决这个
明天的计划:解决这个问题数据迁移的实现(尝试一下还是出现问题了)