将base64转换为文件Javascript输出一个奇怪的结构(但不是在将其转换为Blob时)
我需要将媒体转换为文件类型,然后用JS上传 以下代码为我提供了从电脑内置摄像头拍照时的正确文件输出:将base64转换为文件Javascript输出一个奇怪的结构(但不是在将其转换为Blob时),javascript,android,file,Javascript,Android,File,我需要将媒体转换为文件类型,然后用JS上传 以下代码为我提供了从电脑内置摄像头拍照时的正确文件输出: const convertToFile = (base64: string) => { let arr = base64.split(","), mime = arr[0].match(/:(.*?);/)![1], bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n); wh
const convertToFile = (base64: string) => {
let arr = base64.split(","),
mime = arr[0].match(/:(.*?);/)![1],
bstr = atob(arr[1]),
n = bstr.length,
u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
const extension = mime.split("/")[1];
console.log(extension);
const fileName = new Date().getTime() + `.${extension}`;
return new File([u8arr], fileName, { type: mime });
})
输出=>
但是,当我试图转换从我的手机相机拍摄的照片时(通过完全相同的代码运行),这是我得到的“损坏”输出
**请注意,我必须将此图像转换为文件,因为后端的结构如何,我需要将其作为文件(而不是Blob)发送。解决方案是直接发送Blob,然后在后端处理它。出于某种原因,我手机上的类型文件构造无法正常工作您的手机浏览器似乎没有正确(或根本没有)实现文件构造。使用Blob作为文件就是Blob,无论您在使用Blob发布时遇到什么问题。希望我能帮助您。你试过这种方法吗?谢谢你的帮助。我确实只是上传了Blob并在后端处理它。