使用java将Base64编码图像上载到Amazon s3
发布时间:2020-12-14 05:47:32 所属栏目:Java 来源:网络整理
导读:我正在尝试使用Amazon的 Java API将文件上传到Amazon S3存储.代码是 Byte[] b = data.getBytes();InputStream stream = new ByteArrayInputStream(b);//InputStream stream = new FileInputStream(new File("D:/samples/test.txt"));AWSCredentials credenti
我正在尝试使用Amazon的
Java API将文件上传到Amazon S3存储.代码是
Byte[] b = data.getBytes(); InputStream stream = new ByteArrayInputStream(b); //InputStream stream = new FileInputStream(new File("D:/samples/test.txt")); AWSCredentials credentials = new BasicAWSCredentials("<key>","<key1>"); AmazonS3 s3client = new AmazonS3Client(credentials); s3client.putObject(new PutObjectRequest("myBucket",name,stream,new ObjectMetadata())); 当我在评论前两行并取消注释第三行后运行代码,即stream是FileoutputStream时,文件被正确上载.但是当数据是base64编码的字符串(即图像数据)时,文件会上传但图像已损坏. 解决方法
首先你应该从字符串的开头删除数据:image / png; base64:
示例代码块: byte[] bI = org.apache.commons.codec.binary.Base64.decodeBase64((base64Data.substring(base64Data.indexOf(",")+1)).getBytes()); InputStream fis = new ByteArrayInputStream(bI); AmazonS3 s3 = new AmazonS3Client(); Region usWest02 = Region.getRegion(Regions.US_WEST_2); s3.setRegion(usWest02); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentLength(bI.length); metadata.setContentType("image/png"); metadata.setCacheControl("public,max-age=31536000"); s3.putObject(BUCKET_NAME,filename,fis,metadata); s3.setObjectAcl(BUCKET_NAME,CannedAccessControlList.PublicRead); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- java – 如何确定Swing鼠标事件发生在哪个监视器
- java – 迭代数组列表的时间复杂度
- java – 有关CDI / Weld和DI / Guice中@Inject的
- Hibernate in方法:判断是否在给定的数组内
- java – 为什么`instanceof`错误而不是在用于2个
- java中的java.util.Map.contains()方法调用
- 异常“javax.servlet.jsp.JspException:Broken
- java – 从List/ArrayList获取最后三个元素?
- Java Swing中的JButton、JComboBox、JList和JCol
- 如何设置复杂的Java开发基础架构?
热点阅读