Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.10.2015, 17:30
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

Chrome не показывает тип файла .zip
Начал писать заготовку скрипта для загрузки, выгрузки и удаления файлов .zip и столкнулся с багом: Хром не пишет в объект загружаемого файла его тип:
<h1>Upload or get or delete file</h1>

<form action="" id="file-upload" enctype="multipart/form-data" >
	<input id="file" type="file">
	<input type="submit" value="Send">
</form>
<button id="get">Get file</button><button id="delete">Delete file</button>
<script>
	var form = document.getElementById('file-upload');
	var file = document.getElementById('file');
	var getFile = document.getElementById('get');
	var deleteFile = document.getElementById('delete');
	form.onsubmit = function( e ){
		e.preventDefault();
		var newFile = file.files[0];
		console.log(newFile);
		console.log(newFile.type);
		var formData = new FormData();
	}
</script>

Второй вывод в консоли даёт "application/zip" в Мозилле и пустую строку в Хроме. Получается, я не могу кроссбраузерно проверить тип файла .zip на клиенте. Кто-нибудь с этим сталкивался, и если да, то как решили? Можно конечно на сервер грузить всё подряд и там проверять, но на клиенте тоже хочется уведомить пользователя о неверном формате. Как вариант свойство name смотреть.
Ответить с цитированием
  #2 (permalink)  
Старый 15.10.2015, 00:49
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

Сообщение от Sigizmund2012
Получается, я не могу кроссбраузерно проверить тип файла .zip на клиенте.
Дак и не надо это делать. Попробуй .zip переименовать в .png. И у тебя свойство type будет выводить "image/png", что не верно.
Ответить с цитированием
  #3 (permalink)  
Старый 15.10.2015, 11:32
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

Decode,
Это понятно, защита не от злоумышленника, а от пользователя, загрузившего файл с неверным расширением. Сейчас код выглядит так:
<h1>Upload or get or delete file</h1>

<form action="" id="file-upload" enctype="multipart/form-data" >
	<input id="file" type="file">
	<input type="submit" value="Send">
</form>
<button id="get">Get file</button><button id="delete">Delete file</button>
<div id="message"></div>
<script>
	var form = document.getElementById('file-upload');
	var file = document.getElementById('file');
	var getFile = document.getElementById('get');
	var deleteFile = document.getElementById('delete');
	var message = document.getElementById('message');
	form.onsubmit = function( e ){
		var newFile = file.files[0];
		var formData = new FormData();
		var xhr = new XMLHttpRequest();

		message.innerHTML = '';
		e.preventDefault();

		if (!newFile.name.match('.zip')) {
			message.innerHTML = 'Please, upload only ZIP files!';
			return;
		}
		
		formData.append('zipfile', newFile);
		xhr.open('POST', '/path/', true);
		xhr.onload = function () {
		if (xhr.status === 200) {
			message.innerHTML = 'Uploaded!';
		} else {
			message.innerHTML = 'Error, please try later';
		}
		};
		xhr.send(formData);
	};
</script>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменить тип загрузки файла desperado Javascript под браузер 8 20.11.2014 06:58
Chrome и DOM oliverair Opera, Safari и др. 9 28.01.2013 18:09
Кодировка внешнего JS файла - проблема в Chrome Freddis Opera, Safari и др. 3 26.07.2011 21:48