Передать файл в input value по клику

216
29 июня 2017, 05:11

Здравствуйте.
Я очень слабенький в JS, по этому заранее извиняюсь за глупый вопрос.

Есть функция, которая, по нажатию на <a id="save">SAVE</a> даёт на скачивание файл.

Recorder.setupDownload = function(blob, filename){
    var url = (window.URL || window.webkitURL).createObjectURL(blob);
    var link = document.getElementById("save");
    link.href = url;
    link.download = filename || 'output.wav';
}

Сейчас же нужно, чтобы этот файл сохранился при помощи простой формы, для последующей обработки файла бэкендом.

<form method="POST" action="save" id="formsave" enctype="multipart/form-data">
    <input id="inputwav" type=file name=file>
</form>

Делал так:

Recorder.setupDownload = function(blob, filename){
    var form = getElementById("formsave")
    var input = getElementById("inputwav")
    var url = (window.URL || window.webkitURL).createObjectURL(blob);
    input.value = url;
    form.submit();
}

Браузер возвращает ошибку : SecurityError: The operation is insecure.

Ситуация в том, что до сохранения, файла не существует. Никак не понимаю, как зацепить этот файл.

JavaScript код, естественно, не мой, иначе бы я не стал задавать такого вопроса :)

Пример того, где этот код используется

Файл, с этой функцией.

Заранее спасибо.

Answer 1

Свойство value у input типа file доступно только для чтения из соображений безопасности. Скриптом его изменить нельзя https://www.w3schools.com/jsref/prop_fileupload_value.asp

READ ALSO
Вызов функции js из python

Вызов функции js из python

ПриветМне необходимо получить список логинов с сайта, но полный список высвечивается после нажатия на ссылку с событием onclick, которое вызывает...

296
Angular 2 POST request to the server

Angular 2 POST request to the server

ЗдравстуйтеДелаю приложение для добавления новостей

248
Как в gulp выполнить таски по очередно?

Как в gulp выполнить таски по очередно?

При первом запуске gulp, когда еще проект не собран, запускается browserSync, но все файлы еще не успели сгенерироваться

227