Как поддерживать файл вслед за одним повторно похвалите?

У меня есть поле input file как тот изображения. introducir la descripción de la imagen aquí

Adjuntar un archivo:
  

Вслед за одним location.reload() страницы, отборный файл теряется и ты должен выбирать это снова.

Есть какая-то манера сохранять этот файл в переменной в Javascript, чтобы мочь загружать это снова вслед за одним reload?

Я боюсь, что из-за безопасности это не могут.

0
задан 14.03.2017, 12:36
2 ответа

Как говорит Garrizano в Вашем ответе, по причине безопасности не возможно поддерживать файл выбранным в input type="file", но да есть способы поддерживать файл, когда будет перезагружена страница.

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

Тогда то, что ты был бы должен делать, является следующим:

  1. Как только пользователь выбрал файл, прочитай Ваш контент с FileReader
  2. Сохраняй контент в localStorage (или sessionStorage)
  3. Когда страница будет перезагружена, подтверди, есть ли у тебя файл в localStorage
  4. Если это у тебя есть, покажи ссылку показывая, что пользователь уже переслал файл (помести имя)
  5. Оставь input type="file" я опустошаю (если пользователь хочет изменить файл).

Здесь я оставляю пример того, как было бы возможно видеть код:

<div id="nombrefichero"></div>
<div>
Adjuntar un archivo:<input tabindex="-1" class="fileObligatorio" id="ControlAnexar0" style="width: 100%;"  type="file">
</div>
<input type="button" onClick="location.reload()" value ="Reload">
<script>

function ficheroCargado(nombre, contenido) {

    // mostramos los valores
    document.getElementById("nombrefichero").innerHTML = "Fichero cargado: " + nombre;
    console.log(contenido);

    // guardamos los valores en el localStorage
    localStorage.setItem("nombre", nombre);
    localStorage.setItem("contenido", contenido);

}

function leerFichero(evt) {
    var file = evt.target.files[0]; // FileList object
    var lector = new FileReader();

    lector.onload = function(e) {
        ficheroCargado(file.name, this.result);
    }

    lector.readAsText(file);
}

document.getElementById('ControlAnexar0').addEventListener('change', leerFichero, false);

if (localStorage.getItem("nombre") && localStorage.getItem("contenido")) {
    ficheroCargado(localStorage.getItem("nombre"), localStorage.getItem("contenido"));
} 
</script>

Имей в виду, что у этого решения есть какие-то ограничения:

  • файл должен быть меньше, чем размер, позволенный в localStorage (или ты мог бы использовать какой-то другой метод, чтобы это хранить),
  • куки-файлы должны быть включенными,
  • и файл должен читаться перед тем, как перезагружать страницу (имей в виду, что чтение асинхронное)
3
ответ дан 24.11.2019, 12:04
  • 1
    большое спасибо! очень полный. Сейчас останься má s как чистое знание, так как они сказали мне, чтобы он снял reload. Pa pró x уже. ^^ – lois6b♦ 15.12.2016, 17:38
  • 2
    @lois6b añ adí pequeñ или пример, что podrí схвати использовать как guí в – Alvaro Montoro♦ 15.12.2016, 17:41
  • 3
    если, я только что увидел это. вишня пирога. спасибо снова – lois6b♦ 15.12.2016, 17:41

Также как и ты говоришь, по причинам безопасности не возможно реализовывать то, что ты желаешь.

Здесь есть больше информации относительно этого поведения браузера.

3
ответ дан 24.11.2019, 12:04
  • 1
    большое спасибо из-за informació n ^^ – lois6b♦ 15.12.2016, 17:03