Tôi muốn có giới hạn jQuery một trường tải tệp lên chỉ jpg/jpeg, png và gif. Tôi đang kiểm tra phụ trợ với PHP
rồi. Tôi đang chạy nút gửi thông qua một hàm JavaScript
vì vậy tôi thực sự chỉ cần biết cách kiểm tra các loại tệp trước khi gửi hoặc cảnh báo.Làm cách nào để có các loại tệp giới hạn jQuery khi tải lên?
Trả lời
Bạn có thể nhận được giá trị của trường tệp giống như bất kỳ trường nào khác. Tuy nhiên, bạn không thể thay đổi nó.
Vì vậy, để hời hợt kiểm tra nếu một tập tin có phần mở rộng đúng, bạn có thể làm một cái gì đó như thế này:
var ext = $('#my_file_field').val().split('.').pop().toLowerCase();
if($.inArray(ext, ['gif','png','jpg','jpeg']) == -1) {
alert('invalid extension!');
}
Bạn có thể sử dụng các plugin xác nhận cho jQuery: http://docs.jquery.com/Plugins/Validation
Nó xảy ra với có quy tắc accept() thực hiện chính xác những gì bạn cần: http://docs.jquery.com/Plugins/Validation/Methods/accept#extension
Lưu ý rằng kiểm soát việc mở rộng tệp sion không phải là bằng chứng đạn vì nó không liên quan đến mimetype của tập tin. Vì vậy, bạn có thể có một .png đó là một tài liệu từ và một .doc đó là một hình ảnh png hoàn toàn hợp lệ. Vì vậy, đừng quên kiểm soát nhiều hơn phía máy chủ;)
bạn có thể cung cấp ví dụ về cách sử dụng điều này với http://plugins.krajee.com/file-input#option-allowedfileextensions trên IE11 – shorif2000
Không cần plugin nào chỉ cho tác vụ này. Kết hợp điều này với nhau từ một vài tập lệnh khác:
$('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 = '';
}
});
Bí quyết ở đây là đặt nút tải lên thành tắt trừ khi và cho đến khi loại tệp hợp lệ được chọn.
xin lỗi bro, nhưng đó là một regex xấu. các tệp được phép có dấu chấm trong tên của nó. "giel.asd.aaaaa.jpg.png" .match (/\.(.+)$/) –
Bạn không muốn kiểm tra trên MIME nhiều hơn bất kỳ phần mở rộng nào mà người dùng đang nói dối? Nếu vậy thì nó là ít hơn một dòng:
<input type="file" id="userfile" accept="image/*|video/*" required />
Đẹp nhưng không được IE chấp nhận <10. – spadelives
không nhận được những gì anh ta cần. nó chỉ là để xử lý dễ dàng hơn để chọn một hình ảnh từ một thư mục với phần mở rộng khác nhau. như bạn có thể thấy ở đây -> http://imageshack.us/a/img20/8451/switchzz.jpg – bernte
Vì nó không làm hại IE <10, và không làm tổn thương mã khác, đó là một hạn chế hiệu quả đối với những gì bạn đang cố gắng hạn chế. – Leo
đối với trường hợp của tôi, tôi sử dụng các mã sau:
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>
Điều này không thể kiểm tra loại tập tin và kích thước, thử nghiệm trong FF. –
Nếu bạn đang làm việc với nhiều (html 5) tải lên tệp, tôi lấy nhận xét được đề xuất hàng đầu và sửa đổi nó một chút:
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!');
}
}
Đối với giao diện người dùng, khá thuận tiện khi đặt thuộc tính 'chấp nhận' nếu bạn đang sử dụng trường tệp.
Ví dụ:
<input id="file" type="file" name="file" size="30"
accept="image/jpg,image/png,image/jpeg,image/gif"
/>
Một vài chú ý quan trọng:
Vì vậy, tốt hơn nhiều so với việc sử dụng JQuery –
tôi cố gắng viết làm việc mã ví dụ, tôi thử nghiệm nó và làm tất cả mọi việc .
Hare là mã:
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
}
}
Đây là một mã đơn giản để xác nhận javascript, và sau đó xác nhận nó sẽ làm sạch tệp đầu vào.
<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("");
}
}
Mã này hoạt động tốt, nhưng vấn đề duy nhất là nếu định dạng tệp khác với tùy chọn được chỉ định, nó hiển thị thông báo cảnh báo nhưng nó hiển thị tên tệp trong khi nó bị bỏ qua.
$('#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; }
});
Ví dụ này chỉ cho phép tải lên hình ảnh 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. ASP.NET - Giới hạn tệp tải lên các loại tệp có sẵn
- 2. Bạn làm cách nào để tải lên với giới hạn?
- 3. Cách hạn chế giới hạn kích thước tải lên tệp dựa trên loại tệp .htaccess
- 4. Giới hạn tải lên tệp trong HTTP
- 5. Làm cách nào để hạn chế kích thước tệp loại tệp tải lên bằng PHP?
- 6. Có cách nào để bỏ qua giới hạn maxRequestLength của tải lên tệp 2GB không?
- 7. giới hạn lựa chọn tải tệp lên các loại cụ thể
- 8. Làm cách nào để Xác thực Loại Tệp của Tệp Tải lên?
- 9. Giới hạn kích thước tải lên tệp Rails
- 10. Tải lên tệp jQuery - cách nhận dạng khi tất cả các tệp đã tải lên
- 11. Tăng giới hạn kích thước tải lên tệp trong iis6
- 12. tải lên tệp jquery hạn chế số lượng tệp
- 13. Làm cách nào để giới hạn tốc độ tải lên từ máy chủ trong node.js?
- 14. Giới hạn việc tải tệp lên một số tiện ích mở rộng tệp
- 15. Cách tải lên tệp thông qua jQuery?
- 16. Có giới hạn nào về kích thước tệp khi tải xuống bằng PHP không?
- 17. Tải kích thước tệp tải lên trước khi tải lên
- 18. Cách hạn chế loại tệp được tải lên Bộ điều khiển Spring MVC3
- 19. Làm cách nào để kích hoạt tệp tải lên bằng Trình tải tệp lên Valums Ajax?
- 20. Đếm và giới hạn số tệp được tải lên (đầu vào tệp HTML)
- 21. Tải tệp jquery dạng tệp lên
- 22. Cách xác định giới hạn tải lên tệp tối đa trong php
- 23. Làm cách nào để hạn chế loại tệp có loại tệp nhập HTML?
- 24. Xóa giới hạn tải lên 30MB trên IIS express
- 25. Tải lên tệp đơn jQuery FileUploadUI
- 26. Plugin tải lên tệp jQuery: kích hoạt sự kiện khi tất cả các tệp được tải lên
- 27. Các cách khác để kiểm tra kích thước tệp trước khi tải lên
- 28. jQuery - Cách xóa giới hạn miền chéo
- 29. Giới hạn tải lên kích thước tệp trong Orchard CMS Media
- 30. Xác thực cho các tệp lớn khi Tải lên
Và ràng buộc nó vào hình của bạn:. '$ ("# my_upload_form") bind ("submit", function() { // ở trên kiểm tra }); ' – 321X
bạn có thể sử dụng '$ (' # file_field '). Change (function() {// above check}); ' – makki
' $ ("# my_upload_form"). Bind ("submit", function() {// above check}); 'bây giờ sẽ bị ràng buộc bằng cách sử dụng' $ ("# my_upload_form"). Submit (function() {//above check}); 'http://api.jquery.com/submit/. bạn cũng có thể ngăn chặn biểu mẫu gửi bằng cách sử dụng '$ (" # my_upload_form "). submit (function (e) {// above check e.preventDefault();});' – Liam