不支持文件格式,但使用 base64 解码时它工作正常
File format not supported but when decoding it with base64 it works fine
您好,我在将图片上传到云端时遇到问题 (Backblaze B2)。
问题是,当我使用示例 Thunder 客户端上传文件时,一切正常并显示文件。
现在我的问题是,当我使用 JS 上传时,我不知道为什么它会损坏或出现错误。
就像我上传并下载图片时,Windows 文件管理器说:file format not supported.
我用 base64 img 解码器解码了文件,它工作正常并显示图像。
const submitForm = () => {
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function(e) {
// binary data
let imagedata = reader.result.slice(reader.result.indexOf(',') + 1)
console.log(imagedata);
console.log(sha1(imagedata));
const proxyurl = "https://cors-anywhere.herokuapp.com/";
let datadf = fetch(proxyurl + 'url', {
method: 'POST',
headers: {
"Accept": "*/*",
"User-Agent": "Thunder Client (https://www.thunderclient.io)",
"X-Bz-File-Name": file.name,
"X-Bz-Content-Sha1": "do_not_verify",
"Authorization": "auth",
"Content-Type": "b2/x-auto",
},
body: imagedata,
})
.then((response) => {
return response.json();
})
.catch((err) => {
return {
status: 'fail',
message: 'API CALL ERROR',
error: err.message
};
});
datadf.then(res => console.log(res))
};
reader.onerror = function(e) {
// error occurred
console.log('Error : ' + e.type);
};
.readAsDataURL() 将它读取的文件转换为 Base64,因此它可以表示为 URL,您可以将其放入浏览器。很长的URL,但还是URL.
如果您将图像的 Base 64 表示形式存储到计算机上的文件中,然后尝试使用图像显示程序读取它,操作将失败:“这看起来不像 .jpg, .png 或 .gif“所以我不知道如何处理它。”这就是您的 Windows 文件管理器错误消息的含义。
如果您希望文件的内容是原始的而不是 Base64 编码的,您需要使用 .readAsArrayBuffer().
您好,我在将图片上传到云端时遇到问题 (Backblaze B2)。
问题是,当我使用示例 Thunder 客户端上传文件时,一切正常并显示文件。
现在我的问题是,当我使用 JS 上传时,我不知道为什么它会损坏或出现错误。
就像我上传并下载图片时,Windows 文件管理器说:file format not supported.
我用 base64 img 解码器解码了文件,它工作正常并显示图像。
const submitForm = () => {
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function(e) {
// binary data
let imagedata = reader.result.slice(reader.result.indexOf(',') + 1)
console.log(imagedata);
console.log(sha1(imagedata));
const proxyurl = "https://cors-anywhere.herokuapp.com/";
let datadf = fetch(proxyurl + 'url', {
method: 'POST',
headers: {
"Accept": "*/*",
"User-Agent": "Thunder Client (https://www.thunderclient.io)",
"X-Bz-File-Name": file.name,
"X-Bz-Content-Sha1": "do_not_verify",
"Authorization": "auth",
"Content-Type": "b2/x-auto",
},
body: imagedata,
})
.then((response) => {
return response.json();
})
.catch((err) => {
return {
status: 'fail',
message: 'API CALL ERROR',
error: err.message
};
});
datadf.then(res => console.log(res))
};
reader.onerror = function(e) {
// error occurred
console.log('Error : ' + e.type);
};
.readAsDataURL() 将它读取的文件转换为 Base64,因此它可以表示为 URL,您可以将其放入浏览器。很长的URL,但还是URL.
如果您将图像的 Base 64 表示形式存储到计算机上的文件中,然后尝试使用图像显示程序读取它,操作将失败:“这看起来不像 .jpg, .png 或 .gif“所以我不知道如何处理它。”这就是您的 Windows 文件管理器错误消息的含义。
如果您希望文件的内容是原始的而不是 Base64 编码的,您需要使用 .readAsArrayBuffer().