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 2

1 ответ:

В принципе, то, о чем вы просите, будет невозможно. Если бы можно было иметь некоторый текст, представляющий объект file, то вы могли бы построить этот текст с нуля, несериализовать его и таким образом получить доступ к файлам, на которые пользователь не давал разрешения.

(исключение из этого правила, если репрезентативный текст является своего рода надежно секретной битовой строкой (криптографически подписанной или разреженным ключом в таблице подстановки), которую только браузер мог выдать в первое место - но я думаю, что если бы эта особенность существовала, она была бы задокументирована, и вы бы уже нашли ее.)