尝试从 Blob 创建文件但输出文件的大小无效
Trying to Create a File from Blob but the Output file has Invalid Size
我正在创建一个 canvas 来旋转图像并创建一个 blob。但我需要它作为文件上传到服务器。
return new Promise((resolve, reject) => {
canvas.toBlob(blob => {
// returning an error
if (!blob) {
reject(new Error('Canvas is empty'));
return;
}
// blob.name = fileName;
// creating a Object URL representing the Blob object given
const rotatedImageUrl = window.URL.createObjectURL(blob);
resolve(rotatedImageUrl);
}, 'image/jpeg');
});
我正在尝试从 blob 创建一个文件。我可以使用此代码段创建它。
const rotatedFile = new File([img], originalFile.name, {
type: originalFile.type,
});
但问题是生成的文件大小只有 58 字节。
lastModified: 1644577677380
lastModifiedDate: Fri Feb 11 2022 17:07:57 GMT+0600 (Bangladesh Standard Time) {}
name: "IMG_4792.JPG"
size: 58
type: "image/jpeg"
webkitRelativePath: ""
我认为图像以某种方式损坏了。
最初我认为 canvas 以某种方式破坏了我的图像,但我也尝试从转换为 blob 的上传文件创建一个文件。这也给了我相同的输出。文件大小不正确。
const file = e.target.files[0];
const blobUrl = URL.createObjectURL(file);
const generatedFile = new File([blobUrl], 'untitled', {
type: file.type,
});
有什么解决办法吗?如何从 blob 正确创建文件?
为什么要使用 createObjectURL
?
您应该直接解析 blob
resolve(blob);
然后文件将正确表示图像,而不是表示 objectURL
。
您看到的是生成的 url 的长度。类似于 "blob:https://........'
我正在创建一个 canvas 来旋转图像并创建一个 blob。但我需要它作为文件上传到服务器。
return new Promise((resolve, reject) => {
canvas.toBlob(blob => {
// returning an error
if (!blob) {
reject(new Error('Canvas is empty'));
return;
}
// blob.name = fileName;
// creating a Object URL representing the Blob object given
const rotatedImageUrl = window.URL.createObjectURL(blob);
resolve(rotatedImageUrl);
}, 'image/jpeg');
});
我正在尝试从 blob 创建一个文件。我可以使用此代码段创建它。
const rotatedFile = new File([img], originalFile.name, {
type: originalFile.type,
});
但问题是生成的文件大小只有 58 字节。
lastModified: 1644577677380
lastModifiedDate: Fri Feb 11 2022 17:07:57 GMT+0600 (Bangladesh Standard Time) {}
name: "IMG_4792.JPG"
size: 58
type: "image/jpeg"
webkitRelativePath: ""
我认为图像以某种方式损坏了。 最初我认为 canvas 以某种方式破坏了我的图像,但我也尝试从转换为 blob 的上传文件创建一个文件。这也给了我相同的输出。文件大小不正确。
const file = e.target.files[0];
const blobUrl = URL.createObjectURL(file);
const generatedFile = new File([blobUrl], 'untitled', {
type: file.type,
});
有什么解决办法吗?如何从 blob 正确创建文件?
为什么要使用 createObjectURL
?
您应该直接解析 blob
resolve(blob);
然后文件将正确表示图像,而不是表示 objectURL
。
您看到的是生成的 url 的长度。类似于 "blob:https://........'