Javascript можно ли сериализовать объект File
Мне нужно сериализовать объект File
из входного файла, чтобы объект можно было сохранить, проанализировать обратно в файловый объект, а затем прочитать с помощью объекта FileReader
.
Кто-нибудь знает, возможно ли это в Google Chrome?
Я думаю, что проблема заключается в защите файла.свойство path. Браузеры Webkit скрывают это свойство, поэтому я предполагаю, что когда вы сериализуете его, путь удаляется.
Тогда, конечно, FileReader не может прочитать его без пути информация.
Вот пример:
var files = uploadControl.files[0];
var dataFile = JSON.stringify(files);
var newFile = JSON.parse(dataFile);
var reader = new FileReader();
reader.onload = (function(event) {
var fileContents = event.target.result;
});
reader.readAsText(newFile);
Ничего не происходит. Считыватель не загружен. Если я передам объект JSON, он тоже не будет работать.
1 ответ:
В принципе, то, о чем вы просите, будет невозможно. Если бы можно было иметь некоторый текст, представляющий объект file, то вы могли бы построить этот текст с нуля, несериализовать его и таким образом получить доступ к файлам, на которые пользователь не давал разрешения.
(исключение из этого правила, если репрезентативный текст является своего рода надежно секретной битовой строкой (криптографически подписанной или разреженным ключом в таблице подстановки), которую только браузер мог выдать в первое место - но я думаю, что если бы эта особенность существовала, она была бы задокументирована, и вы бы уже нашли ее.)