如何为File对象设置size属性?构造函数设置无效求解决
如何为File对象设置自定义size属性?
File对象的size属性是只读的,它由文件内容的实际字节数决定,原生File构造函数的第三个参数并不支持size配置项,所以你直接传入{ size: 100 }不会生效。
解决方案1:通过Object.defineProperty重定义size属性
可以利用Object.defineProperty方法覆盖原生的只读size属性:
const filename = 'your-file-name'; const file = new File([''], filename); // 重定义size属性为你需要的数值 Object.defineProperty(file, 'size', { value: 100, enumerable: true, configurable: true }); console.log(file.size); // 输出 100
解决方案2:自定义File子类
如果不想直接修改原生对象,可以创建一个继承自File的子类,通过重写size getter来返回自定义值:
class CustomFile extends File { constructor(chunks, filename, options = {}, customSize) { super(chunks, filename, options); this._customSize = customSize; } get size() { // 优先返回自定义大小,否则返回原生计算的大小 return this._customSize ?? super.size; } } const filename = 'your-file-name'; const file = new CustomFile([''], filename, {}, 100); console.log(file.size); // 输出 100
注意事项
- 修改File对象的
size属性仅在前端生效,如果涉及文件上传等场景,后端可能会根据实际传输的内容长度校验,此时自定义的size值不会影响真实的文件大小。 - 部分严格的环境或浏览器可能限制对原生只读属性的修改,建议根据实际使用场景测试兼容性。
内容的提问来源于stack exchange,提问作者user16860065
相关产品推荐
相关产品推荐

