繁体   English   中英

如何将图像上传到Amazon S3

[英]how to upload image to Amazon S3

我正在开发一个将图像(jpg)上传到AWS S3的Android应用。 图片正在上传,但无法使用网络浏览器打开:图片无效或以字符串形式打开。

//skipping error handling for simplicity

InputStream is = Utils.streamFromUri(this, uri);
byte[] buffer = new byte[FileUtils.getInputSize(is)];
...
//is is restored at this point
is.read(buffer);
String data = new String(buffer);
S3.createObjectForBucket(bucketName, objectName, data)

您能否分享一个可上传的工作代码,或者给出一些解决方法的指导?

谢谢

两件事情。

在amazone S3中。 您需要将图像上的特权设置为“所有人:读取”。 我正在使用Firefox插件S3FOX,然后右键单击,按“编辑ACL”,然后为每个人提供“读取”权限。

您可能必须设置一个custome标头。 内容类型:图片/ jpeg

这取决于您如何上传文件,通常这是由automagic处理的。

您链接的文件已损坏。 如果您知道计算机上的图像质量很好,请尝试使用其他工具将图像上传到S3。

http://www.s3fox.net/

第一个文件仅填充0。 第二个文件不是jpeg,但似乎是某种转换的结果(其中包含一些照片数据)。 在正常情况下,上传应该没有问题。 如果您提供有关上传方式(代码或工具)的详细信息,我们可以从那里进行。


更新资料

您用于获取上传数据的代码可能无法正常工作。 我不知道您的实用程序的详细信息,但是当您这样做时

FileUtils.getInputSize(is)

它可能会读取整个流,因此您将其读到流的末尾,并且不读取任何内容进行上载。 我强烈建议您使用Apache Commons IO读取数据。 将其读入内存后,您可以得到它的大小。


更新2

您正在使用字节到字符串的转换。 来自String(byte[])文档

Constructs a new String by decoding the specified array of bytes using 

平台的默认字符集。

由于您使用的是二进制数据,因此它正在发生转变。 实际上,从第二个文件ef bf bd开头的第二个文件中也可以看到它,它是Unicode替换字符。 因此,请勿使用字符串存储二进制数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM