কীভাবে jQuery ফাইল আপলোডগুলিতে সীমাবদ্ধ রাখবেন?


133

আমি jQuery একটি ফাইল আপলোড ক্ষেত্রকে কেবল jpg / jpeg, png, এবং gif-এ সীমাবদ্ধ রাখতে চাই। PHPইতিমধ্যে আমি ব্যাকএন্ড চেক করছি । আমি JavaScriptইতিমধ্যে একটি ফাংশনটির মাধ্যমে আমার জমা বোতামটি চালাচ্ছি তাই আমাকে সাবমিট বা সতর্কতার আগে ফাইলের ধরনগুলি কীভাবে পরীক্ষা করতে হবে তা সত্যিই আমার জানা উচিত।

উত্তর:


280

আপনি অন্য কোনও ফিল্ডের সমান একটি ফাইলের ক্ষেত্রের মান পেতে পারেন। তবে আপনি এটি পরিবর্তন করতে পারবেন না।

সুতরাং কোনও ফাইলের সঠিক এক্সটেনশান রয়েছে কিনা তা सतর্কভাবে পরীক্ষা করতে আপনি এই জাতীয় কিছু করতে পারেন:

var ext = $('#my_file_field').val().split('.').pop().toLowerCase();
if($.inArray(ext, ['gif','png','jpg','jpeg']) == -1) {
    alert('invalid extension!');
}

18
এবং এটি আপনার ফর্মের সাথে আবদ্ধ করুন: $("#my_upload_form").bind("submit", function() { // above check });
321X

7
আপনি ব্যবহার করতে পারেন$('#file_field').change(function(){// above check});
মক্কি

3
$("#my_upload_form").bind("submit", function() { // above check });$("#my_upload_form").submit(function() { // above check }); api.jquery.com/submit ব্যবহার করে এখন আবদ্ধ হওয়া উচিত । আপনি ব্যবহার করে ফর্ম জমা দেওয়ার প্রতিরোধ করতে পারেন$("#my_upload_form").submit(function(e) { // above check e.preventDefault(); });
লিয়াম

1
এই ক্ষেত্রে, ব্যবহারকারী যদি ".jpg" এমএস ওয়ার্ড ফাইলের উদাহরণ হিসাবে যুক্ত করেন তবে ফাইলআপলোড এই ফাইলটিকে চিত্র হিসাবে গ্রহণ করবে। আমি মনে করি এটি ঠিক নেই।
জেহুন

3
এটি বলার অপেক্ষা রাখে না যে এটি একটি বোকা প্রমাণ পদ্ধতি নয় .. দিনের শেষে আপনার ব্যাকএন্ডটি ফাইলের প্রথম কয়েকটি বাইট পরীক্ষা করছে কিনা তা নিশ্চিত করার জন্য এটি যে ফাইল ফাইলটি প্রকৃতপক্ষে আপনি চান তা নিশ্চিত করুন inf আরেকটি বিষয় ভাবতে হবে, লিনাক্স এবং ওএসএক্সে আপনার কোনও প্রকার ছাড়াই একটি ফাইল থাকতে পারে যা আপনি চান সেই ধরণের প্রকৃতপক্ষে .. সুতরাং এটিও এতে ব্যর্থ হবে
ক্রিস

39

এই কাজের জন্য কোনও প্লাগইন প্রয়োজন নেই। অন্যান্য কয়েকটি স্ক্রিপ্ট থেকে এটি একত্রে আবদ্ধ হয়েছে:

$('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 = '';
    }
});

এখানে কৌশলটি হ'ল আপলোড বোতামটি অক্ষমতে সেট করুন যদি না কোনও বৈধ ফাইল প্রকার নির্বাচন না করা হয়।


6
দুঃখিত ভাই, তবে এটি একটি খারাপ রেজেক্স। ফাইলগুলির নামে বিন্দু থাকতে অনুমতি দেওয়া হয়েছে। "giel.asd.aaaaa.jpg.png"। ম্যাচ (/\.(.+)$/)
টিম ক্রেটসমার

27

আপনি jQuery এর জন্য বৈধতা প্লাগইন ব্যবহার করতে পারেন: http://docs.jquery.com / প্লাগইনস / ভালিডেশন

এটি একটি গ্রহণযোগ্য () নিয়ম রয়েছে যা আপনার ঠিক যা প্রয়োজন ঠিক তা করে: http://docs.jquery.com/plugins/Validation/Methods/accept# এক্সটেনশন

নোট করুন যে ফাইল এক্সটেনশন নিয়ন্ত্রণ করা কোনওভাবেই বুলেট প্রুফ নয় কারণ এটি কোনওভাবেই ফাইলের মাইমাইপ সম্পর্কিত নয়। সুতরাং আপনার কাছে একটি .png থাকতে পারে যা একটি শব্দ নথি এবং একটি ডক perfectly তাই আরও নিয়ন্ত্রণ সার্ভার-সাইড করতে ভুলবেন না;)


তুমি কেমন সাথে এই ব্যবহার করতে উদাহরণস্বরূপ প্রদান করতে পারেন plugins.krajee.com/file-input#option-allowedfileextensions IE11 উপর
shorif2000

25

ফ্রন্ট-এন্ডের জন্য এটি ' গ্রহণযোগ্য ' বৈশিষ্ট্যটি রাখা খুব সুবিধাজনক যদি আপনি কোনও ফাইল ক্ষেত্র ব্যবহার করছেন।

উদাহরণ:

<input id="file" type="file" name="file" size="30" 
       accept="image/jpg,image/png,image/jpeg,image/gif" 
/>

কয়েকটি গুরুত্বপূর্ণ নোট:


1
জিকুয়েরি ব্যবহারের চেয়ে অনেক বেশি ভাল
ক্রিস্টোফার গ্রিগ

19

ব্যবহারকারীর যেই শরণাপন্নতা রয়েছে তার চেয়ে বরং মাইমে পরীক্ষা করতে চান না? যদি তা হয় তবে এটি এক লাইনেরও কম:

<input type="file" id="userfile" accept="image/*|video/*" required />

তার যা প্রয়োজন তা পায় না। বিভিন্ন এক্সটেনশন সহ কোনও ফোল্ডার থেকে কোনও চিত্র নির্বাচন করা সহজ হ্যান্ডলিংয়ের জন্য যেমন আপনি এখানে দেখতে পারেন -> imageshack.us/a/img20/8451/switchzz.jpg
বার্নটে

যেহেতু এটি আই <10 টি ক্ষতি করে না এবং অন্য কোডের ক্ষতি করে না, আপনি যা সীমাবদ্ধ করার চেষ্টা করছেন তার উপর এটি কার্যকর সীমাবদ্ধতা।
লিও

4

আমার ক্ষেত্রে আমি নিম্নলিখিত কোডগুলি ব্যবহার করেছি:

    if (!(/\.(gif|jpg|jpeg|tiff|png)$/i).test(fileName)) {              
    alert('You must select an image file only');               
    }

3

আমি ওয়ার্কিং কোড উদাহরণ লেখার চেষ্টা করি, আমি এটি পরীক্ষা করি এবং সবকিছু কার্যকর হয়।

হরে কোড:

এইচটিএমএল:

<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
    }
}

1

এই কোডটি সূক্ষ্মভাবে কাজ করে, তবে কেবলমাত্র সমস্যাটি যদি ফাইল ফর্ম্যাটটি নির্দিষ্ট বিকল্পগুলি ছাড়া অন্য হয় তবে এটি একটি সতর্কতা বার্তা দেখায় তবে এটি ফাইলটির নাম প্রদর্শন করে যখন এটি অবহেলা করা উচিত।

$('#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; }
});

1

এই উদাহরণটি কেবল পিএনজি চিত্র আপলোড করতে দেয়।

এইচটিএমএল

<input type="file" class="form-control" id="FileUpload1" accept="image/png" />

জাতীয়

$('#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;
                    }
                });

আপনি কীভাবে চিত্রের আকারকে সীমাবদ্ধ করবেন সে বিষয়ে পরামর্শ দিতে পারেন। উদাহরণস্বরূপ, 10 মিমি আকারের চিত্রটি গ্রহণ করা উচিত নয়
PDSSandeep

@PDSSandeep এই লিঙ্কে অনুগ্রহ চেক করুন stackoverflow.com/questions/6575159/...
বিকাশকারী

0
<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>

এটি এফএফ পরীক্ষিত ফাইলের ধরণ এবং আকার চেক করতে পারে না।
কামার ফিরোজ

0

যদি আপনি একাধিক (এইচটিএমএল 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!');

        }
    }

0
    $("input[name='btnsubmit']").attr('disabled', true);
    $('input[name="filphoto"]').change(function () {
    var ext = this.value.match(/\.(.+)$/)[1];
    switch (ext) 
    {
    case 'jpg':
    case 'jpeg':
    case 'png':
    case 'bmp':
        $("input[name='btnsubmit']").attr('disabled', false);
    break;
    default:
        alert('This is not an allowed file type.');
        $("input[name='btnsubmit']").attr('disabled', true);
        this.value = '';

-1
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;
    }

-1

জাভাস্ক্রিপ্ট বৈধতার জন্য একটি সাধারণ কোড এখানে রয়েছে এবং এটি বৈধ হওয়ার পরে এটি ইনপুট ফাইলটি পরিষ্কার করবে।

<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("");
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.