Переименование объекта File () в JavaScript
Я хотел бы, чтобы мои пользователи могли переименовать файл перед его загрузкой.
у меня есть File
объект в Javascript, который имеет name
свойство, которое уже установлено, но я хотел бы, чтобы это можно было обновить. Прямо сейчас делаю очевидное myFile.name = "new-name.txt"
возвращает ошибку, что это свойство доступно только для чтения.
каков наилучший способ изменить name
свойство на JavaScript
4 ответов
вы можете добавить input
тег с именем на нем и скрыть name
свойство от пользователя. На сервере просто используйте input
как имя и игнорировать имя по умолчанию.
теперь file.name
является свойством только для чтения, я нашел, что это лучший способ переименовать объект файла в браузере:
const myNewFile = new File([myFile], 'new_name.png', {type: myFile.type});
попробуйте это:
var blob = file.slice(0, -1, 'image/png');
var newFile = new File([blob], 'name.png', {type: 'image/png'});
Примечание.: это для типа изображения, вы должны изменить этот тип на самом деле вы используете.
в ответ на ответ Александра Таборды... Первый и второй параметры объекта.slice () - это начальные и конечные байты исходного blob, которые должны сформировать новый blob. Говоря:
var blob = file.slice(0,-1);
вы не говорите " копировать в конец файла "(что, как я думаю, является вашей целью), вы говорите"копировать весь blob, кроме последнего байта".
Как говорит @carestad
var blob = file.slice(0, file.size);
с последующим созданием нового объекта File() должен создать точную копию с новым именем.
обратите внимание, что с png файл будет считаться недействительным без последнего байта.
From:https://developer.mozilla.org/en-US/docs/Web/API/Blob/slice