阿里云数据备份的OSS接口(2)

input:也就是输入流,这个我们把Url内容存储到OSS的Bukect上,其实也就是转化为流的方式进行存储的。这样做的目的主要就是url下载File,把File上传到OSS,这样会大大影响存储速率。所以在项目中数据备份都是通过流的方式,而不是建立中间临时文件。

metadata:ObjectMetaData是用户对该object的描述,由一系列name-value对组成。这里我们直接设为空。

注:获取流的方法除了我下面写的,还有我注释掉的bis = url.openStream()这种方法同样可以获取到InputStream。

 

import com.aliyun.oss.OSSClient; import com.aliyun.oss.model.ObjectMetadata; import com.aliyun.oss.model.PutObjectResult; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; /** * Created by XuHui on 2016/9/28. */ public class TestJava { static String accessKeyId = "Your Access Key ID";//你注册OSS建立实例Bucket的accessKeyId和accessKeySecret static String accessKeySecret = "Your Access Key Secret"; static String endPoint = "OSS url";//OSS的访问地址 static String bucketName = "bucket-example";//Bucket的名称 public static void main(String[] rags)throws Exception{ //上传的Url地址 String path = "Your Download Url"; URL url = new URL(path.trim()); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); InputStream bis = urlConnection.getInputStream(); //bis = url.openStream(); //创建OSSClient OSSClient ossClient = new OSSClient(endPoint, accessKeyId, accessKeySecret); //objKey是存储到Bucket的Object的相对路径 String objKey = "cd/example.tar"; ObjectMetadata objMetadata = new ObjectMetadata();//objMetadata可为空 PutObjectResult result = ossClient.putObject(bucketName, objKey, bis, objMetadata); System.out.print("PutObjectResult " + result + ", " + result.getETag()); } }

下面直接看下存储的Bucket效果吧

阿里云数据备份的OSS接口

这边我说一个这个程序很奇怪的问题,这边我自己弄了好久。OSS的访问endPoint地址,我的Bucket上信息显示oss-cn-hangzhou-am24-a.**.lab.com,用这个地址一直不能上传,之后我改成地址前面加BucketName:bucket-for-rds.oss-cn-hangzhou-am24-a.**.lab.com才好使。

  这个遇到的同学还可以尝试endPoint前面加BukectName,这个我猜测可能是公有云和私有云的区别,有了解的同学可以交流一下。最近一直在做数据存储方面的项目,如果描述或者程序有错,请指出,谢谢~

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/9a5ec5e77c5020c0ad24c5ee1918f3ee.html