Загрузка CSV-файла

419
28 января 2017, 11:46

Здравствуйте.
В форме мне необходимо загружать CSV-файл на сайт.
Как запретить пользователям грузить в эту форму файлы другого формата?

accept="text/csv"

Или для этого формата правильным является какой-то другой MME-тип? Или это можно как-то сделать при помощи javascript?
Спасибо.

UPD Есть вот такой код

var filesExt = ['csv']; 
$('input[type=file]').change(function(){
    var parts = $(this).val().split('.');
    if(filesExt.join().search(parts[parts.length - 1]) == -1){
       alert('Не совпадает формат файла');
    }
});

Подскажите, пожалуйста, как после алерта добавить ещё и очистку данного поля file?

Answer 1

Чтобы явно ограничить допустимые типы файлов, нужно добавить фильтр на отображаемые файлы в html-элемент: accept=".csv"
Этот фильтр можно обойти, если выбрать в фильтре формы "Все файлы". Чтобы предотвратить это, дополним ваш код:

var re = /(?:\.([^.]+))?$/;
var fileExt = 'csv'; 
$('input[type=file]').change(function(){
    if (fileExt.indexOf(re.exec($('.file-for-import')[0].files[0].name)[1]) < 0){
       alert('Не совпадает формат файла');
       $('.file-for-import')[0].value = null;
    }
});

Ссылка на работающий пример: https://jsfiddle.net/cbamdqt1/5/

Answer 2

Работает, проверяет если фаил csv, делает рисет файлу. HTML:

<form>
    <input type="text">
    <input type="file">
</form>
<button id="bt">RESET FILE</button>

Javascript

    var res = document.querySelector('input[type=file]');
    res.addEventListener("change", function(){
       var type = this.files[0].name.split(".").pop();
       if(type != "csv")
       {
           alert("wrong file format");
       }
    })
   document.getElementById('bt').addEventListener("click", function(){
       var frm = document.querySelector('input[type=file]');
       frm.value = "";
   })
READ ALSO
Не подхватывает дату mootools datepicker

Не подхватывает дату mootools datepicker

Если формат даты в поле d-m-Y (%d-%m-%Y) то при попытке изменить дату выбор даты начинается с 1970 года Скажите пожалуйста как решить данную проблему...

332
Как сделать прерывание в цепочке?

Как сделать прерывание в цепочке?

Нужно прервать цепочку если в строке будет такой пункт /опоздание больше 15 мин == согласовано/ то нужно делать разрыв в цепочке и в итоге по подсчетам...

327
WordPress Ajax product update?

WordPress Ajax product update?

Выдает ошибку сервера 500

311