Я хотел бы, чтобы jQuery ограничил область загрузки файла только jpg/jpeg, png и gif. Я делаю проверку бэкэнда с PHP
. Я запускаю свою кнопку отправки через функцию JavaScript
, поэтому мне просто нужно знать, как проверить типы файлов перед отправкой или оповещением.Как ограничить типы файлов jQuery при загрузке?
ответ
Вы можете получить значение поля файла так же, как и любое другое поле. Однако вы не можете его изменить.
Так поверхностно проверить, если файл имеет правильное расширение, вы могли бы сделать что-то вроде этого:
var ext = $('#my_file_field').val().split('.').pop().toLowerCase();
if($.inArray(ext, ['gif','png','jpg','jpeg']) == -1) {
alert('invalid extension!');
}
Вы можете использовать плагин валидации для JQuery: http://docs.jquery.com/Plugins/Validation
Это случается у вас есть правило accept(), которое делает именно то, что вам нужно: http://docs.jquery.com/Plugins/Validation/Methods/accept#extension
Обратите внимание, что управление файлом расширяется sion не является пуленепробиваемым, поскольку он никоим образом не связан с типом файла. Таким образом, у вас может быть .png, это документ с текстом и .doc, это абсолютно корректный png-образ. Поэтому не забудьте сделать больше элементов управления на стороне сервера;)
Можете ли вы привести пример, как использовать это с http://plugins.krajee.com/file-input#option-allowedfileextensions в IE11 – shorif2000
Плагин не нужен для этой задачи. Мощеное это вместе с парой других сценариев:
$('INPUT[type="file"]').change(function() {
var ext = this.value.match(/\.(.+)$/)[1];
switch (ext) {
case 'jpg':
case 'jpeg':
case 'png':
case 'gif':
$('#uploadButton').attr('disabled', false);
break;
default:
alert('This is not an allowed file type.');
this.value = '';
}
});
Хитрости здесь, чтобы установить кнопку загрузки на отключенный тех пор, пока не будет выбран недопустимый тип файла.
извините, но это плохое регулярное выражение. файлам разрешено иметь точки в своем имени. "giel.asd.aaaaa.jpg.png" .match (/\.(.+)$/) –
Не хотите лучше проверять MIME, чем на любом расширении, на котором лежит пользователь? Если да, то это меньше, чем одна строка:
<input type="file" id="userfile" accept="image/*|video/*" required />
Приятный, но не одобрен IE <10. – spadelives
не получает то, что ему нужно. это просто упрощает обработку изображения из папки с разным расширением. как вы можете видеть здесь -> http://imageshack.us/a/img20/8451/switchzz.jpg – bernte
Поскольку это не повредит IE <10, и не повредит другой код, это эффективное ограничение на то, что вы пытаюсь ограничить. – Leo
для моего случая я использовал следующие коды:
if (!(/\.(gif|jpg|jpeg|tiff|png)$/i).test(fileName)) {
alert('You must select an image file only');
}
function validateFileExtensions(){
var validFileExtensions = ["jpg", "jpeg", "gif", "png"];
var fileErrors = new Array();
$("input:file").each(function(){
var file = $(this).value;
var ext = file.split('.').pop();
if($.inArray(ext, validFileExtensions) == -1) {
fileErrors.push(file);
}
});
if(fileErrors.length > 0){
var errorContainer = $("#validation-errors");
for(var i=0; i < fileErrors.length; i++){
errorContainer.append('<label for="title" class="error">* File:'+ file +' do not have a valid format!</label>');
}
return false;
}
return true;
}
<form enctype="multipart/form-data">
<input name="file" type="file" />
<input type="submit" value="Upload" />
</form>
<script>
$('input[type=file]').change(function(){
var file = this.files[0];
name = file.name;
size = file.size;
type = file.type;
//your validation
});
</script>
Это не может проверить тип и размер файла, проверенные в FF. –
Если вы имеете дело с несколькими (HTML 5) загрузки файлов, я взял верхний предложенный комментарий и немного изменил его:
var files = $('#file1')[0].files;
var len = $('#file1').get(0).files.length;
for (var i = 0; i < len; i++) {
f = files[i];
var ext = f.name.split('.').pop().toLowerCase();
if ($.inArray(ext, ['gif', 'png', 'jpg', 'jpeg']) == -1) {
alert('invalid extension!');
}
}
Для внешнего интерфейса довольно удобно поместить 'accept' атрибут, если вы используете поле файла.
Пример:
<input id="file" type="file" name="file" size="30"
accept="image/jpg,image/png,image/jpeg,image/gif"
/>
Несколько важных примечаний:
Настолько лучше, чем использование JQuery –
Я стараюсь писать рабочий пример кода, я проверить его и все работает ,
Заяц Код:
HTML:
<input type="file" class="attachment_input" name="file" onchange="checkFileSize(this, @Model.MaxSize.ToString(),@Html.Raw(Json.Encode(Model.FileExtensionsList)))" />
Javascript:
//function for check attachment size and extention match
function checkFileSize(element, maxSize, extentionsArray) {
var val = $(element).val(); //get file value
var ext = val.substring(val.lastIndexOf('.') + 1).toLowerCase(); // get file extention
if ($.inArray(ext, extentionsArray) == -1) {
alert('false extension!');
}
var fileSize = ($(element)[0].files[0].size/1024/1024); //size in MB
if (fileSize > maxSize) {
alert("Large file");// if Maxsize from Model > real file size alert this
}
}
Вот простой код для проверки кода на JavaScript, и после проверки он будет чистить входной файл.
<input type="file" id="image" accept="image/*" onChange="validate(this.value)"/>
function validate(file) {
var ext = file.split(".");
ext = ext[ext.length-1].toLowerCase();
var arrayExtensions = ["jpg" , "jpeg", "png", "bmp", "gif"];
if (arrayExtensions.lastIndexOf(ext) == -1) {
alert("Wrong extension type.");
$("#image").val("");
}
}
Этот код работает отлично, но только вопрос, если формат файла, кроме указанных вариантов, он показывает предупреждающее сообщение, но оно отображает имя файла, в то время как оно должно быть пренебрегая его.
$('#ff2').change(
function() {
var fileExtension = ['jpeg', 'jpg', 'pdf'];
if ($.inArray($(this).val().split('.').pop().toLowerCase(), fileExtension) == -1) {
alert("Only '.jpeg','.jpg','.pdf' formats are allowed.");
return false; }
});
В этом примере можно загрузить только изображение PNG.
HTML
<input type="file" class="form-control" id="FileUpload1" accept="image/png" />
JS
$('#FileUpload1').change(
function() {
var fileExtension = ['png'];
if ($.inArray($(this).val().split('.').pop().toLowerCase(), fileExtension) == -1) {
alert("Only '.png' format is allowed.");
this.value = ''; // Clean field
return false;
}
});
- 1. HTML5 - Принять/Ограничить типы файлов при загрузке не работает - Альтернативы?
- 2. Uploadify Ограничить типы файлов
- 3. Ограничить типы файлов по капельке
- 4. Ограничить типы файлов в BlueImp JQuery Загрузка файла
- 5. Как ограничить типы файлов грозными js
- 6. Как ограничить размер файла при многофайловой загрузке файлов?
- 7. Как я могу ограничить типы файлов в загрузке файлов CGI в Perl?
- 8. Ограничить типы файлов, разрешенных для загрузки asp.net
- 9. Ограничить допустимые типы загрузки файлов PHP
- 10. Как ограничить типы ввода
- 11. Ограничить общий размер выгрузки всех файлов при загрузке
- 12. Типы файлов изменяются на .xml при загрузке в Firefox
- 13. Ограничить максимальный элемент при загрузке нескольких файлов в петлю.
- 14. Каковы поддерживаемые типы файлов при загрузке файла PHP?
- 15. jQuery ошибка загрузки нескольких файлов при загрузке
- 16. Типы файлов dropzonejs
- 17. Ошибка при загрузке файлов
- 18. Переименование файлов при загрузке
- 19. переименование файлов при загрузке
- 20. OutOfMemory при загрузке файлов
- 21. Ошибка при загрузке файлов
- 22. Как ограничить типы файлов с помощью типа входного файла HTML?
- 23. Как ограничить типы файлов для пользователя в веб-браузере
- 24. Как ограничить типы файлов, которые будут отображаться в окне загрузки
- 25. ограничить типы файлов в форме :: файл laravel 4.2
- 26. Android: Как ограничить Google Drive видимостью при загрузке файла?
- 27. Повреждение файлов при передаче, загрузке или загрузке
- 28. 404 при попытке загрузить разные типы файлов
- 29. PHP загрузки файлов при загрузке двух файлов
- 30. Плагин загрузки файлов JQuery (BackLoad): как ограничить # и размер файлов?
и привязать его к вашей форме:. '$ ("# my_upload_form") связывают ("отправить", функция() { // выше check }); ' – 321X
вы можете использовать' $ ('# file_field'). Change (function() {// выше check}); ' – makki
' $ ("# my_upload_form"). Bind ("submit", function() {// выше check}); 'теперь следует привязывать с помощью' $ ("# my_upload_form"). Submit (function() {//above check}); 'http://api.jquery.com/submit/. вы можете также предотвратить отправку формы с помощью '$ (" # my_upload_form "). submit (function (e) {// выше проверить e.preventDefault();});' – Liam