Страницы

Поиск по вопросам

суббота, 13 июля 2019 г.

Как сделать чтобы загрузка файлов не отправлялась сразу на сервер?

После добавления файлов, они сразу грузятся на сервер. Как исправить
document.querySelector('input[name="file"]').addEventListener('change', function(e) { var file = this.files[0]; var filename = file.name; var file_id = Math.random().toString().substr(2,6); var file_ext = file.name.split('.')[file.name.split('.').length-1]; var fd = new FormData(); fd.append("file", file); var xhr = new XMLHttpRequest(); xhr.open('POST', '#', true); var li = '

  • .'+file_ext+'
    '+filename+'
  • '; $('.form-upload-list').append(li); xhr.upload.onprogress = function(e) { if (e.lengthComputable) { var percentComplete = (e.loaded / e.total) * 100; $('#file-'+file_id+' ul.progress > li:first-child > div > div').css('width',percentComplete+'%'); if (percentComplete==100) $('#file-'+file_id+' .btns').html(''); } } xhr.upload.onerror = function() { $('#file-'+file_id).addClass('error'); $('#file-'+file_id).find('.btns').remove(); $('#file-'+file_id).find('.file-icon').html(''); } xhr.send(fd); }, false); function remove_file(id){ $('#file-'+id).remove(); }


    Ответ

    На сколько я понял вам необходим предпросмотр фотографий перед их загрузкой.
    "use strict"; var buttonSubmit = document.querySelector(".buttonSubmit"); buttonSubmit.addEventListener("click", loadOnServer, false); var arrFiles = []; // массив файлов var photoArea = document.querySelector(".photoArea"); var inputFile = document.querySelector(".inputFile"); inputFile.addEventListener("change", setNewImage, false); /** * обрабатываем изменения в input * @param e */ function setNewImage(e) { var file = e.target.files[0]; arrFiles.push(file); // добавляем в массив файлов var reader = new FileReader(); reader.onload = function (e) { var image = new Image(); image.src = e.target.result; return image.onload = function () { var img = document.createElement("img"); img.src = this.src; // добавляем превью в div photoArea.appendChild(img); // вешаем функцию удаления при клике на картинку img.addEventListener("click", delImage.bind(img, file), false); return true; }; }; return reader.readAsDataURL(file); } /** * Делаем запрос с данными на сервер * @returns {boolean} */ function loadOnServer() { if (arrFiles.length > 0) { var formData = new FormData(); for (var i = 0; i < arrFiles.length; i += 1) { formData.append("file[]", arrFiles[i]); } var xhr = new XMLHttpRequest(); xhr.open('POST', '#', true); // Ваши функции обработки запроса xhr.upload.onprogress = function (e) {}; xhr.upload.onerror = function () {}; xhr.send(formData); } return false; } /** * Удаляем картинку */ function delImage(file) { this.parentNode.removeChild(this); this.removeEventListener("click", delImage.bind(this), false); for (var i = 0; i < arrFiles.length; i += 1) { if (file === arrFiles[i]) { delete arrFiles[i]; break; } } } .photoArea { margin-top: 20px; } .photoArea img { max-width: 250px; }


    Комментариев нет:

    Отправить комментарий