Показать сообщение отдельно
  #1 (permalink)  
Старый 20.05.2014, 10:40
Новичок на форуме
Отправить личное сообщение для tikki Посмотреть профиль Найти все сообщения от tikki
 
Регистрация: 08.07.2013
Сообщений: 6

Добавление файлов к уже выбранным до загрузки на сервер
Ситуация такая: Есть форма в которой присутствует окно для текстового сообщения и кнопка "Прикрепить файлы".
Пишу текст, жму кнопку "Прикрепить файлы", выбираю 2-3файла, и тут вспоминаю, что мне надо к этому сообщению добавить еще файлик. Повторно жму кнопку "Прикрепить файлы", выбираю... и получается что 2-3 файла выбранные ранее у меня теряются.
Сейчас я сделала так: в момент выбора с помощью XMLHttpRequest загружаю файлы на сервер, и тогда повторный выбор файлов не уничтожает первичный. Но сейчас File API позволяет все что угодно делать с файлами до загрузки на сервер и поэтому справедливо возникает вопрос, а нельзя ли каким-то образом сохранить первичный $_FILSE и к нему добавлять новые файлы до загрузки на сервер?

<form name="flsms" method="POST" ACTION="index.php?up_lod" enctype="multipart/form-data">
      <textarea name="message" id="message" style="width: 99%;" rows="8" WRAP="physical" required></textarea>
	<button onclick="showFileInput()">Прикрепить файлы</button>
     	<input name="uploads[]" type="file" id="fileInput" style="display:none;" multiple="multiple"  onchange="processFiles(this.files)">
        
       <div  id="fileOutput" name="fileOutput"></div></form>

function processFiles(files) {
    var formData = new FormData();

    for (var i = 0, f; f = files[i]; i++) {
	    formData.append("uploadfile" + i, f);
	
    }
	var req;
	if (window.XMLHttpRequest)
	    req = new XMLHttpRequest();
	else if (window.ActiveXObject) {
	    // Internet Explorer
	    try {
		req = new ActiveXObject('Msxml2.XMLHTTP');
	    } catch (e) {
	    }
	    try {
		req = new ActiveXObject('Microsoft.XMLHTTP');
	    } catch (e) {
	    }
	}

	if (req) {
	    req.onreadystatechange = function() {
		if (req.readyState == 4 && req.status == 200) {
	   		document.getElementById('fileOutput').innerHTML =  req.responseText
		}
	    };
	    req.open('POST', "index.php?load_filse", true);
	    req.send(formData);
	}

}

function showFileInput() {
    var fileInput = document.getElementById("fileInput");
    fileInput.click();
}
Ответить с цитированием