Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将图像上传到AmazonS3_Android_Image_Amazon S3 - Fatal编程技术网

Android 如何将图像上传到AmazonS3

Android 如何将图像上传到AmazonS3,android,image,amazon-s3,Android,Image,Amazon S3,我正在开发一个Android应用程序,将图像jpg上传到AWS S3。正在上载图像,但我无法使用web浏览器打开它:图像无效或以字符串形式打开 //skipping error handling for simplicity InputStream is = Utils.streamFromUri(this, uri); byte[] buffer = new byte[FileUtils.getInputSize(is)]; ... //is is restored at this poin

我正在开发一个Android应用程序,将图像jpg上传到AWS S3。正在上载图像,但我无法使用web浏览器打开它:图像无效或以字符串形式打开

//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,并为每个人提供读取权限

您可能必须设置自定义标题。内容类型:图像/jpeg

这取决于你上传文件的方式,通常由automagic处理

你链接的文件被破坏了。如果您知道图像在您的计算机上很好,请尝试使用其他工具将图像上载到S3


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

更新

您获取上传数据的代码可能不起作用。我不知道你的实用程序的细节,但是当你知道的时候

FileUtils.getInputSize(is)
它可能会读取整个流,因此您将在流的末尾结束,而不读取任何内容以供上传。我强烈建议您使用来读取数据。在读入内存后,可以得到它的大小

更新2

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

Constructs a new String by decoding the specified array of bytes using 
平台的默认字符集


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

您可以共享此图像的链接吗?您可以使用is.readbuffer;在得到尺寸后,我不知道为什么此时您不会在流的末尾。我看不出你在哪里重新创造它。我看到它隐藏在…它是。我还能错过什么?好吧,我又更新了。我很确定问题出在字节到字符串的转换上。你真的不应该这样做。非常感谢-我绕过了字符串创建,它工作得很好。