從<input type="file">
收到的文件的屬性是隻讀的。如何在JavaScript中創建File對象的修改副本?
例如,以下嘗試重寫file.name
可能會失敗或失敗TypeError: Cannot assign to read only property 'name' of object '#<File>'
。
<input onchange="onchange" type="file">
onchange = (event) => {
const file = event.target.files[0];
file.name = 'foo';
}
嘗試經由Object.assign({}, file)
未能創建一個副本(創建一個空的對象)。
那麼如何克隆一個File
對象?
https://developer.mozilla.org/en-US/docs/Web/API/File#Implementation_notes
這本身就是Blob
擴展:
https://developer.mozilla.org/en-US/docs/Web/API/Blob/Blob
let file = event.target.files[0];
if (this.props.distro) {
const name = 'new-name-here' + // Concat with file extension.
file.name.substring(file.name.lastIndexOf('.'));
// Instantiate copy of file, giving it new name.
file = new File([file], name, { type: file.type });
}
注意的第一個參數File()
必須是
是的,這個作品謝謝。 – Jazzy