Android 上传到s3存储桶的图像未作为图像保存在存储桶中

Android 上传到s3存储桶的图像未作为图像保存在存储桶中,android,amazon-web-services,file-upload,amazon-s3,Android,Amazon Web Services,File Upload,Amazon S3,我刚刚开始学习如何在android中将文件和图像上传到s3 bucket。我已经学会了如何上传文件,并且可以正常工作(我在我的bucket中看到了它),但是,问题是它保存为一个无法打开的文件,而不是它原来的图像 我从onActivityResult获取uri,如下所示: Uri selectedImg=data.getData(); String[]filePathColumn={MediaStore.Images.Media.DATA}; Cursor cursor=getContentRe

我刚刚开始学习如何在android中将文件和图像上传到s3 bucket。我已经学会了如何上传文件,并且可以正常工作(我在我的bucket中看到了它),但是,问题是它保存为一个无法打开的文件,而不是它原来的图像

我从onActivityResult获取uri,如下所示:

Uri selectedImg=data.getData();
String[]filePathColumn={MediaStore.Images.Media.DATA};

Cursor cursor=getContentResolver().query(selectedImg,filePathColumn,null,null,null);
cursor.moveToFirst();

int columnIndex=cursor.getColumnIndex(filePathColumn[0]);
imgString=cursor.getString(columnIndex);
并使用“imgString”变量创建文件:

File imageFile = new File(imgString);
然后我将imageFile传递到s3上传方法:

TransferObserver observer = transferUtility.upload(
                MY_BUCKET, objectkey, imageFile);

而且它确实上传。但当我转到bucket时,它不会保存为图像(比如'imageFile.jpg'),而是保存为无法读取或访问的文件(“imageFile”)。我做错了什么?我应该传入文件扩展名,让bucket知道它是一个图像吗?我在网上查过,但这似乎无关紧要,加上uri确实包含.jpg(或.png)扩展名,因此,我不确定为什么它似乎不起作用

如果URL确实包含扩展名
.jpg
.png
,那么这与您所说的图像保存为
imageFile
而不是
imageFile.jpg
相矛盾。它是否与扩展名一起保存,听起来好像是这样。您缺少的部分是在上载文件时设置文件的Mime类型或内容类型。@MarkB我的意思是URI而不是URL。上载前图像的URI,而不是上载后存储桶中的URL
objectkey
变量中的值是它在S3上的文件名。你是不是把那个字符串的分机掉了?@MarkB对我来说很有用!非常感谢你!如果URL确实包含扩展名
.jpg
.png
,则这与您所说的图像保存为
imageFile
而不是
imageFile.jpg
相矛盾。它是否与扩展名一起保存,听起来好像是这样。您缺少的部分是在上载文件时设置文件的Mime类型或内容类型。@MarkB我的意思是URI而不是URL。上载前图像的URI,而不是上载后存储桶中的URL
objectkey
变量中的值是它在S3上的文件名。你是不是把那个字符串的分机掉了?@MarkB对我来说很有用!非常感谢你!