Javascript AWS S3获取的位图文件无效

Javascript AWS S3获取的位图文件无效,javascript,image,amazon-s3,blob,cordova-plugins,Javascript,Image,Amazon S3,Blob,Cordova Plugins,我已经为此挣扎了一段时间,我将尽可能多地向您提供信息(有些信息可能与此无关),因为我完全被卡住了。我使用的是爱奥尼亚,我希望能够用我的手机拍摄一张照片,并将其上传到AWS S3存储桶中。我过去常常做到这一点 据我所知;这些图片以一个大的base64字符串输出,我必须将其转换为Blob,将其转换为文件对象,然后将该文件对象上载到AWS。然而,当我这样做时,它总是将其作为图像以外的内容上传。每当我打开它时,我都会收到一个错误,上面写着: "Not a valid bitmap file. its

我已经为此挣扎了一段时间,我将尽可能多地向您提供信息(有些信息可能与此无关),因为我完全被卡住了。我使用的是爱奥尼亚,我希望能够用我的手机拍摄一张照片,并将其上传到AWS S3存储桶中。我过去常常做到这一点

据我所知;这些图片以一个大的base64字符串输出,我必须将其转换为Blob,将其转换为文件对象,然后将该文件对象上载到AWS。然而,当我这样做时,它总是将其作为图像以外的内容上传。每当我打开它时,我都会收到一个错误,上面写着:

"Not a valid bitmap file.  its format is not currently supported."

下面是一个正在工作的示例(用于工作的机器以某种方式损坏):

我试着在一个文本编辑器中打开每一个,看看发生了什么。对于第一个(破碎的一个),我得到以下信息:

当我尝试在文本编辑器中打开工作文件时,我得到以下结果:

现在它看起来像是一个转换问题,但我认为我正确地转换了它。 下面是我用来上传的代码(你可以在后面的帖子中看到console.logs):

core.js

awsServices.js

如果您查看我标记的一些控制台日志代码中的注释。我将在此处显示它们以了解更多信息:

A-(上传至):

B-(awsServices.upload):

这就是我如何将dataURI转换为Blob(在uplpoaddtoaws中调用-第一个屏幕截图):

这就是在上面代码中传递到“dataURI”参数的内容:

如果有更多的信息,请告诉我。这件事让我挠头已有一段时间了。感谢您的帮助。谢谢

如中所述:

文件对象是Blob的一种特定类型,可以在Blob可以使用的任何上下文中使用。特别是,FileReader、URL.createObjectURL()、createImageBitmap()和XMLHttpRequest.send()都接受blob和文件


因此,我认为您的问题在于uploadToAws函数,因为您首先创建一个Blob,然后使用Blob创建一个文件,而我认为您只需使用dataURItoBlob返回的字节数组初始化File对象,因为File对象实际上已经是一个Blob对象。

是的!我终于成功了。我没有意识到文件和Blob是同一件事,所以我只是给了AWS我的Blob,而不是我的文件,它工作了!我已经在这上面呆了将近两个星期了。谢谢你。