问题描述
我正在创建拖放文件(可以选择多个文件)功能。用户可以在这里选择多个文件。我想将文件的大小从字节转换为 mb。 .获取所有文件的函数
scripts.js
const handleFiles = (files) => {
files = [...files];
//converting bytes into mb and trying to assign it back to size key
files.forEach(function (file) { <----these lines need to be changed
file["size"] = `${(file["size"] / 1024 ** 2).toFixed(2)} mb`; <------
}); <-----
console.log(files);
};
为什么我要使用扩展运算符?
Ans:如果我不使用扩展运算符并且用户只选择一个文件,那么它会作为一个对象而不是一个对象列表传递
如何使用新值设置对象的每个大小键的值。
解决方法
File.size 是只读属性,您无法更改它(请参阅此处:https://developer.mozilla.org/en-US/docs/Web/API/File#instance_properties)。 如果要在 UI 中以 Mb 为单位显示文件大小,则必须获取 File.size(或 File["size"],就像您在做的那样),并像在函数中一样处理它以将其显示在UI(让函数返回大小数组,或在应用的呈现部分包含大小格式),但您不能更改 File 实例本身的属性。