Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.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
将base64转换为文件Javascript输出一个奇怪的结构(但不是在将其转换为Blob时)_Javascript_Android_File - Fatal编程技术网

将base64转换为文件Javascript输出一个奇怪的结构(但不是在将其转换为Blob时)

将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

我需要将媒体转换为文件类型,然后用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);

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并在后端处理它。