Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Удалить прикреплённые файлы (https://javascript.ru/forum/misc/50084-udalit-prikrepljonnye-fajjly.html)

Гробовщик 11.09.2014 10:21

Удалить прикреплённые файлы
 
Доброго времени суток.
Решил реализовать загрузку файлов на сервер, но файлы должны быть исключительно "image.*"
Конечно при загрузке на сервер скрипт их проверяет и другие файлы просто игнорирует, но хотелось бы не шокировать пользователя и удалять непотребные файлы сразу после их выбора
т.е. пользователь выбрал 10 файлов разного формата, скрипт нашёл 7 изображений, сказал пользователю, что нельзя добавлять не изображения и показал что Выбрано 7 файла(ов)
Фотографии: 
<input id="files" name="files[]" multiple="" type="file" />
<br />
<output id="list"></output>

function handleFileSelect(evt) {
document.getElementById('list').innerHTML="";
    var files = evt.target.files; // FileList object
    for (var i = 0, f; f = files[i]; i++) {
      if (!f.type.match('image.*')) {
      //Здесь должна быть строка удаления файла
      alert(files);
        continue;
      }
      var reader = new FileReader();
      reader.onload = (function(theFile) {for(var u in theFile)
      alert(u+'='+theFile[u]+'==<');
        return function(e) {//alert(e.target.result);
          var span = document.createElement('span');
          span.innerHTML = ['<img class="thumb" width="100" height="111" style="border: 1px solid #000; margin: 10px 5px 0 0;" src="', e.target.result,
                            '" title="', escape(theFile.name), '"/>'].join('');
          document.getElementById('list').insertBefore(span, null);
        };
      })(f);

      reader.readAsDataURL(f);
    }
  }
document.getElementById('files').addEventListener('change', handleFileSelect, false);

skrudjmakdak 11.09.2014 10:33

у тебя в переменной files хранится грубо говоря массив, элементы которого можно удалять
http://javascript.ru/Array/splice

MallSerg 11.09.2014 10:56

Есть мнение что тех кто заменяет стандартное и ожидаемое поведение выбора файлов нужно лечить электрическим током.

Гробовщик 11.09.2014 11:01

skrudjmakdak,
Элементы удалять я пытался files.splice (i,1); он не понимает, потому и обратился на форум

Гробовщик 11.09.2014 11:04

MallSerg,
Зачем же так грубо? По сути мне надо загружать только изображения, мозила по умолчанию в выборе ставит все типы файлов, если пользователь выбрал только изображения то его это не коснётся, если же он выбрал кучу белеберды то будет проще если скрипт скажет выбирать только изображения и любезно только их и оставит, не думаю что это сильно "порвёт шаблон"

skrudjmakdak 11.09.2014 11:16

да как то странно)) тогда можно сформировать свой массив:
убирает все файлы, которые начинаются единицы
<html>
<head>
</head>
<body>
	<input type="file" onchange="ch(event)" multiple>
	<script>
function ch(e) {
	var files = e.target.files, myfiles = [], file;
	
	for(var i = 0, ln = files.length; i < ln; ++i) {
		file = files[i];
		if (file.name[0] != '1') {
			myfiles.push(file);
		}
	}
	console.log(myfiles);
}
	</script>
</body>
</html>

Гробовщик 11.09.2014 11:31

skrudjmakdak,
Не понимаю, он всё равно выбирает файлы с еденицей

skrudjmakdak 11.09.2014 12:16

файлы, которые начинаются с 1цы, например: 1список_фамилий.txt
а ты себе уже поставь регулярку, на проверку изображений

Гробовщик 11.09.2014 12:51

skrudjmakdak,
Ну я выбираю "инструкция.doc" "1309.jpg" "инженерка.cdw" он пишет выбрано 3 файла, а должен что 2

skrudjmakdak 11.09.2014 12:52

какой браузер? мой код правил?

Гробовщик 11.09.2014 13:47

skrudjmakdak,
FireFox Нет не правил, запускаю кнопкой посмотреть

skrudjmakdak 11.09.2014 14:45

вот я вам скрины наделал, у меня все ок. я не знаю что и как у вас не получается:


Гробовщик 11.09.2014 15:30

А вот что вы имели ввиду) Я думал, что возле кнопки обзор будет надпись выбран 1 файл (или типо того), что бы он непотребные файлы удалял изначально

skrudjmakdak 11.09.2014 16:07

ну дак если из объекта FileList мы ничего не удалили (он не дает) значит там и остануться все файлы. кстати вы можете очистить эту кнопку, если она вас так беспокоет. самое главное, что у вас есть новый массив с нужными для вас файлами


Часовой пояс GMT +3, время: 09:21.