ব্লুিম্প ফাইল আপলোড প্লাগইনে ম্যাক্সফাইল সাইজ এবং গ্রহণ ফাইল ফাইলগুলি কার্যকর হয় না। কেন?


85

আমি ফাইলগুলি আপলোড করার জন্য ব্লিমিম্প jQuery ফাইল আপলোড প্লাগইন ব্যবহার করছি।

আমার আপলোড করতে সমস্যা ছিল না তবে বিকল্পটি maxFileSizeএবংacceptFileTypes কাজ করে না।

এটি আমার কোড:

$(document).ready(function () {
    'use strict';

    $('#fileupload').fileupload({
        dataType: 'json',
        autoUpload: false,
        acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
        maxFileSize: 5000000,
        done: function (e, data) {
            $.each(data.result.files, function (index, file) {
                $('<p style="color: green;">' + file.name + '<i class="elusive-ok" style="padding-left:10px;"/> - Type: ' + file.type + ' - Size: ' + file.size + ' byte</p>')
                    .appendTo('#div_files');
            });
        },
        fail: function (e, data) {
            $.each(data.messages, function (index, error) {
                $('<p style="color: red;">Upload file error: ' + error + '<i class="elusive-remove" style="padding-left:10px;"/></p>')
                    .appendTo('#div_files');
            });
        },
        progressall: function (e, data) {
            var progress = parseInt(data.loaded / data.total * 100, 10);

            $('#progress .bar').css('width', progress + '%');
        }
    });
});

হ্যালো, আমি ফাইল আপলোডের জন্য এই কোডটি বাস্তবায়নের চেষ্টা করছি তবে ত্রুটিটি পেয়ে যা আপলোড ফাইল ত্রুটি বলে: আপলোড করা বাইটগুলি ফাইলের আকারের চেয়ে বেশি হয় আপনি কি দয়া করে পরামর্শ দিতে পারেন কারণ কী?
জে মহার্জন 10

4
@ জয়মহরজান আপনি কি নিশ্চিত যে সর্বোচ্চ ফাইল সাইজটি সঠিকভাবে কনফিগার করা হয়েছে?
ইয়োব্রে

4
Php.ini এ সঠিক কনফিগারেশন করার পরে এখন আমি বড় ফাইলগুলি আপলোড করতে সক্ষম হয়েছি। আপনার সাহায্যের জন্য ধন্যবাদ। :)
জে মাহার্জান

আমার ক্ষেত্রে, জিআইএফকে পুনরায় আকার দেওয়া হয়েছিল এবং পিএনজি রূপান্তর করা হচ্ছে এবং তারপরে জিআইএফের জন্য ফিল্টার স্পষ্টভাবে ব্যর্থ হয়েছিল। এবং আশ্চর্যের সাথে যথেষ্ট, এটি কী কাজ চলছে তা বুঝতে পেরে তা নিজেই কাজ শুরু করে দিয়েছিল, আমি লাইব্রেরির সাথে কিছু করেছি কিনা তা দ্বিগুণ করেছিলাম, যা আমি রেখেছিলাম তা কনসোল লগগুলি ছিল, যা আমি সরিয়ে দিয়েছি এবং এখনও কাজ করছি। পোস্ট করা যাতে এটি কারও সাহায্য করতে পারে।
জিয়া উল রেহমান মোগল

উত্তর:


135

একই সমস্যা ছিল এবং নীলিম্প লোকটি বলেছে যে " ম্যাক্সফাইলসাইজ এবং গ্রহণযোগ্য ফাইল টাইপগুলি কেবলমাত্র ইউআই সংস্করণ দ্বারা সমর্থিত " এবং _অডিয়েট এবং _হ্যাসরর পদ্ধতিগুলি অন্তর্ভুক্ত করার জন্য একটি (ভাঙা) লিঙ্ক সরবরাহ করেছে।

সুতরাং কীভাবে এই পদ্ধতিগুলিকে অন্তর্ভুক্ত করা যায় তা না জেনে স্ক্রিপ্টটি গোলমাল না করে আমি এই ছোট ফাংশনটি লিখেছি। এটা আমার জন্য কাজ বলে মনে হচ্ছে।

শুধু এটি যোগ করুন

add: function(e, data) {
        var uploadErrors = [];
        var acceptFileTypes = /^image\/(gif|jpe?g|png)$/i;
        if(data.originalFiles[0]['type'].length && !acceptFileTypes.test(data.originalFiles[0]['type'])) {
            uploadErrors.push('Not an accepted file type');
        }
        if(data.originalFiles[0]['size'].length && data.originalFiles[0]['size'] > 5000000) {
            uploadErrors.push('Filesize is too big');
        }
        if(uploadErrors.length > 0) {
            alert(uploadErrors.join("\n"));
        } else {
            data.submit();
        }
},

এখানে আপনার কোড হিসাবে দেখানো হয়েছে। ফাইলআপলোড বিকল্পগুলির শুরুতে

$(document).ready(function () {
    'use strict';

    $('#fileupload').fileupload({
        add: function(e, data) {
                var uploadErrors = [];
                var acceptFileTypes = /^image\/(gif|jpe?g|png)$/i;
                if(data.originalFiles[0]['type'].length && !acceptFileTypes.test(data.originalFiles[0]['type'])) {
                    uploadErrors.push('Not an accepted file type');
                }
                if(data.originalFiles[0]['size'].length && data.originalFiles[0]['size'] > 5000000) {
                    uploadErrors.push('Filesize is too big');
                }
                if(uploadErrors.length > 0) {
                    alert(uploadErrors.join("\n"));
                } else {
                    data.submit();
                }
        },
        dataType: 'json',
        autoUpload: false,
        // acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
        // maxFileSize: 5000000,
        done: function (e, data) {
            $.each(data.result.files, function (index, file) {
                $('<p style="color: green;">' + file.name + '<i class="elusive-ok" style="padding-left:10px;"/> - Type: ' + file.type + ' - Size: ' + file.size + ' byte</p>')
                .appendTo('#div_files');
            });
        },
        fail: function (e, data) {
            $.each(data.messages, function (index, error) {
                $('<p style="color: red;">Upload file error: ' + error + '<i class="elusive-remove" style="padding-left:10px;"/></p>')
                .appendTo('#div_files');
            });
        },
        progressall: function (e, data) {
            var progress = parseInt(data.loaded / data.total * 100, 10);

            $('#progress .bar').css('width', progress + '%');
        }
    });
});

আপনি লক্ষ্য করবেন যে আমি সেখানে একটি ফাইল আকার ফাংশন যুক্ত করেছি কারণ এটি কেবলমাত্র ইউআই সংস্করণেও কাজ করবে।

@ ল্যাপসাইড দ্বারা প্রস্তাবিত অতীত ইস্যুটি পেতে আপডেট হয়েছে: যুক্ত হয়েছে data.originalFiles[0]['type'].lengthএবং data.originalFiles[0]['size'].lengthত্রুটিগুলির পরীক্ষার আগে পরীক্ষার আগে খালি নয় তা নিশ্চিত করার জন্য অনুসন্ধানগুলিতে। যদি সেগুলি বিদ্যমান না থাকে তবে কোনও ত্রুটি প্রদর্শিত হবে না এবং এটি কেবল আপনার সার্ভারের পাশের ত্রুটি পরীক্ষার উপর নির্ভর করবে।


এটি সত্যিই দরকারী। তবে এটি লক্ষ্য করা উচিত যে data.originalFiles[0]['type']ফাইল এপিআই সমর্থন করে না এমন ব্রাউজার থেকে আপলোড করার সময় খালি। আমার অ্যান্ড্রয়েড ফোনে এটি ছিল। আমি যা করেছি তা হ'ল যদি এই মানটি পাওয়া না যায় এবং তা সার্ভার-সাইড মাইম প্রকারের বৈধতার পিছনে পড়ে। অন্যথায় আপনি কখনও acceptFileTypes.testলাইনটি
পেরে উঠবেন

@ একচেটিয়া যেটি বিজোড়, আমি আমার অ্যান্ড্রয়েড ফোনে ডেটা.রিজিনাল ফাইলস [0] ['টাইপ'] এবং ['আকার'] এর মান পাই এবং এটি উভয় পরীক্ষায় পাস করে। আমার ফোনটিতে আমি আসলে সমস্যা করছি যেখানে সমস্ত কিছুই ত্রুটি ছাড়াই কাজ করে বলে মনে হচ্ছে তবে ফাইলটি আপলোড হয় না। অন্য কোথাও কোনও সমস্যা নেই, কেবল অ্যান্ড্রয়েড।
PaulMrG

8
আমি মনে করি শর্তটি 'data.originalFiles [0] [' আকার ']। দৈর্ঘ্য' হ্রাস করা হয়েছে তাই এটি সর্বদা মিথ্যা প্রত্যাবর্তন করে।
kkocabiyik

4
ডেটা.ফায়ালগুলি [0] ['আকার'] এবং ডেটা.ফায়ালগুলি [0] ['টাইপ'] ব্যবহার করুন
জোসে

4
'দৈর্ঘ্য' ছাড়াই (ডেটা.রিজিনাল ফাইলস [0] ['আকার'] && ডেটা.রিজিনাল ফাইলগুলি [0] ['আকার']> 500000) ছাড়াই ব্যবহার করছেন? 'সত্য': 'মিথ্যা' ঠিকঠাক কাজ করে, তবে আমি জানতে চাই যে আমি কোনও দৃশ্যের অভাব অনুভব করছি কি না data data.originalFiles [0] ['আকার']? 'সত্য': 'মিথ্যা' (1) 0, নাল,
অপরিজ্ঞাত

49

এটিকে কার্যকর করতে আপনার jquery.fileupload-process.js এবং jquery.fileupload- validate.js অন্তর্ভুক্ত করা উচিত ।


4
এটি আরও ভাল উত্তর বলে মনে হচ্ছে। ;)
থসমো

8
আপনার স্ক্রিপ্টগুলি লোড করার ক্রমটি ত্রুটির বার্তাটি উপস্থিত হওয়ার জন্য গুরুত্বপূর্ণ: tmpl.min.js> jquery.ui.widget.js> jquery.iframe-transport.js> jquery.fileupload.js> jquery.fileupload-ui.js> jquery.fileupload-process.js> jquery.fileupload-
validate.js

4
সমস্যা একই, আপনি কিছু কাজের উদাহরণ প্রদান করতে পারেন দয়া করে?
ভ্লাত্টো

4
আমি এই একই সমস্যা হচ্ছে। আমার জেএস ফাইলগুলি বর্ণিত সঠিক ক্রমে রয়েছে, তবুও আমি এখনও ফাইলগুলি আপলোড করতে সক্ষম হয়েছি যা উভয়ই রেজেক্স অনুযায়ী মেনে নেওয়া হয় নি, তবে ফাইল আকারের সীমাতেও ব্যাপকভাবে। আমি jQuery 1.11.1 সহ 9.10.5 এর সর্বশেষতম ফাইলআপলোড সংস্করণটি ব্যবহার করছি
মিঃ পাবলো

4
এমনকি আমার পক্ষেও কার্যকর হয় না, এমনকি সঠিক ক্রমে অন্তর্ভুক্ত সমস্ত স্ক্রিপ্টগুলি।
BadHorsie

10

পূর্বের উত্তরে যেমন পরামর্শ দেওয়া হয়েছিল, আমাদের দুটি অতিরিক্ত ফাইল অন্তর্ভুক্ত করতে হবে - jquery.fileupload-process.jsএবং তারপরে jquery.fileupload-validate.jsযদিও ফাইল যুক্ত করার সময় আমাকে কিছু অতিরিক্ত এজ্যাক্স কল করতে হবে, আমি fileuploadaddসেই কলগুলি সম্পাদন করার জন্য ইভেন্টটিতে সাবস্ক্রাইব করছি । এই জাতীয় ব্যবহার সম্পর্কে এই প্লাগইনটির লেখক নিম্নলিখিত পরামর্শ দিয়েছেন

দয়া করে এখানে একবার দেখুন: https://github.com/blueimp/jQuery-File-Upload/wiki/Options#wiki-callback-options

বাইন্ডের মাধ্যমে অতিরিক্ত ইভেন্ট শ্রোতাদের যোগ করা (বা jQuery 1.7+ সহ পদ্ধতিতে) পদ্ধতিটি jQuery ফাইল আপলোড ইউআই সংস্করণ দ্বারা কলব্যাক সেটিংস সংরক্ষণের জন্য পছন্দসই বিকল্প।

বিকল্পভাবে, আপনি কেবল নিজের কলব্যাকে প্রসেসিংটি সহজেই শুরু করতে পারেন: https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.fileupload-process.js#L50

প্রস্তাবিত দুটি বিকল্পের সংমিশ্রণটি ব্যবহার করে, নিম্নলিখিত কোডটি আমার পক্ষে নিখুঁতভাবে কাজ করে

$fileInput.fileupload({
    url: 'upload_url',
    type: 'POST',
    dataType: 'json',
    autoUpload: false,
    disableValidation: false,
    maxFileSize: 1024 * 1024,
    messages: {
        maxFileSize: 'File exceeds maximum allowed size of 1MB',
    }
});

$fileInput.on('fileuploadadd', function(evt, data) {
    var $this = $(this);
    var validation = data.process(function () {
        return $this.fileupload('process', data);
    });

    validation.done(function() {
        makeAjaxCall('some_other_url', { fileName: data.files[0].name, fileSizeInBytes: data.files[0].size })
            .done(function(resp) {
                data.formData = data.formData || {};
                data.formData.someData = resp.SomeData;
                data.submit();
        });
    });
    validation.fail(function(data) {
        console.log('Upload error: ' + data.files[0].error);
    });
});

4
অমিত, আমি এটি চেষ্টা করেছি এবং নিম্নলিখিত ত্রুটি পেয়েছি:Uncaught Error: cannot call methods on fileupload prior to initialization; attempted to call method 'process'
TheVillageIdiot

4
এর প্রায়শই অর্থ হ'ল .fileupload()সঠিক সময়ে ডাকা হয়নি। কোডটি না দেখে, এটি নির্ণয় করা প্রায় অসম্ভব। আমি একটি নতুন প্রশ্ন খোলার এবং প্রাসঙ্গিক কোড পোস্ট করার পরামর্শ দিচ্ছি, সম্ভবত একটি জিসফিল হিসাবে।
অ্যামিথ জর্জ

@TheVilageIdiot আপনি কি 'ফাইলআপলোড.ফিলআপলোড ঘোষণার ভিতরে' ফাইলআপলোডডে 'যুক্তি স্থাপনের চেষ্টা করছেন? আমি যখন অমিতের উদাহরণটিকে এইরকম কিছুতে ভাঁজ করার চেষ্টা করছিলাম তখন আমারও অনুরূপ ত্রুটি $('#fileupload').fileupload({ blah : blah, blah : blah, }) $fileInput.on('fileuploadadd', function(evt, data) { var $this = $(this); var validation = data.process(function () { return $this.fileupload('process', data); }); ... হয়েছিল : আমি যখন এটি সম্পর্কে চিন্তাভাবনা করেছি তখন এটি স্পষ্ট ছিল তবে আমি এখনও কোনও ঘোষণা শেষ না করে এমন কিছুর মধ্যে যুক্তি সংজ্ঞায়নের চেষ্টা করছিলাম।
jdhurst

আমি এই ত্রুটিটি পাচ্ছি: আনকচড রেফারেন্স এরিয়ার: মেকএজ্যাক্সকল
মুখতার

8

এটি ফায়ার ফক্সে আমার জন্য কাজ করে

$('#fileupload').fileupload({

    dataType: 'json',
    //acceptFileTypes: /(\.|\/)(xml|pdf)$/i,
    //maxFileSize: 15000000,

    add: function (e, data) {
        var uploadErrors = [];

        var acceptFileTypes = /\/(pdf|xml)$/i;
        if(data.originalFiles[0]['type'].length && !acceptFileTypes.test(data.originalFiles[0]['type'])) {
            uploadErrors.push('File type not accepted');
        }

        console.log(data.originalFiles[0]['size']) ;
        if (data.originalFiles[0]['size'] > 5000000) {
            uploadErrors.push('Filesize too big');
        }
        if(uploadErrors.length > 0) {
            alert(uploadErrors.join("\n"));
        } else {
            data.context = $('<p/>').text('Uploading...').appendTo(document.body);
            data.submit();
        }

    },
    done: function (e, data) {
        data.context.text('Success!.');
    }
});

4
স্ট্যাক ওভারফ্লোতে স্বাগতম! আপনি কি দয়া করে এই উত্তরটি আবার লিখতে পারেন যাতে এটি ইংরেজিতে হয়? আমি জানি স্বয়ংক্রিয় অনুবাদকরা মাঝে মাঝে তা বলা শক্ত করে তুলতে পারেন, তবে আমরা এখানে কেবল ইংরেজীই ব্যবহার করি (নন-প্রোগ্রামিং)।
পোপস

15
মনে রেখো, নাসাতোম বলছে "এটি আমার জন্য কাজ করে: এটি ফায়ার ফক্সে সঠিক" বলে বুঝতে সক্ষম করার জন্য আপনাকে চালাকি ভাষাবিদ হতে হবে না। আপলোড ত্রুটিটি "ফাইলের আকার খুব বড়"। আমি অস্ট্রেলিয়ান এবং আমি ইংরেজী বলতে বড় হয়েছি, তবে আমার মনে হয় একটি নির্দিষ্ট ইংরাজী বলার মনোভাব রয়েছে। "আমরা এখানে ইংরেজী ভাষা ব্যবহার করি" এটি সত্য নয়। এখানকার লোকেরা অনেকগুলি বিভিন্ন ভাষা ব্যবহার করে। তবে ইংরেজিতে প্রশ্ন ও উত্তর থাকা এই সাইটের নীতি।
টিম ওগিলভি

3

"jquery.fileupload-ui.js" নামক ফাইলটি খুলুন, আপনি কোডটি দেখতে পাবেন:

 $.widget('blueimp.fileupload', $.blueimp.fileupload, {

    options: {
        // By default, files added to the widget are uploaded as soon
        // as the user clicks on the start buttons. To enable automatic
        // uploads, set the following option to true:
        acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
        autoUpload: false,
        // The ID of the upload template:
        uploadTemplateId: 'template-upload',
        // The ID of the download template:
        downloadTemplateId: 'template-download',
        。。。。

কেবল একটি লাইন কোড যুক্ত করুন --- নতুন বৈশিষ্ট্য "গ্রহণযোগ্য ফাইল টাইপস", এর মতো:

 options: {
        // By default, files added to the widget are uploaded as soon
        // as the user clicks on the start buttons. To enable automatic
        // uploads, set the following option to true:
        **acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,**
        autoUpload: false,
        // The ID of the upload template:
        uploadTemplateId: 'template-upload',
        // The ID of the download template:
        downloadTemplateId: 'template-d

এখন আপনি দেখতে পাবেন যে সবকিছু ঠিক আছে! ~ আপনি কেবল কোনও ভুল জায়গা দিয়ে এই বৈশিষ্ট্যটি গ্রহণ করেন।


আপনি যদি সহায়তা করতে পারেন তবে কোনও প্লাগইন / লাইব্রেরির মূল কোডটি কখনও সংশোধন করা খারাপ ধারণা।
BadHorsie

3

আপনি যদি জেএসের আমদানিকৃত এবং সঠিক ক্রমে সমস্ত প্লাগইন পেয়ে থাকেন তবে আপনার এখনও সমস্যা রয়েছে বলে মনে হয় যে আপনার নিজের "অ্যাড" হ্যান্ডলারটি Nਫ਼ফকে * -diate.js প্লাগইন থেকে উল্লেখ করেছেন যা সাধারণত ফায়ার করবে seems ডেটা.প্রসেস () এ কল করে সমস্ত বৈধতা বন্ধ করুন। সুতরাং এটি ঠিক করতে আপনার "যুক্ত" ইভেন্ট হ্যান্ডলারের মধ্যে এটির মতো কিছু করুন:

$('#whatever').fileupload({
...
add: function(e, data) {
   var $this = $(this);
   data.process(function() {
      return $this.fileupload('process', data);
   }).done(function(){
      //do success stuff
      data.submit(); <-- fire off the upload to the server
   }).fail(function() {
      alert(data.files[0].error);
   });
}
...
});

আমার ইস্যুটি সমাধান করা হয়েছে
ফিজফক্স

2

পরীক্ষিত / বৈধ উদাহরণ:

  • একাধিক ফাইল ইনপুট
  • এক বা বহু$.grep() ফাইল আপলোডের জন্য - ত্রুটি সহ অ্যারে থেকে ফাইলগুলি সরাতে
  • imageএবং audioবিন্যাস
  • স্ট্রিং দ্বারা গতিশীল ফাইল টাইপ new RegExp()

বিজ্ঞপ্তি: acceptFileTypes.test()- মাইম প্রকারগুলি পরীক্ষা করুন , অ্যাডিয়ো ফাইলের জন্য এটির মতো .mp3হবে audio/mpeg- কেবল প্রসারিত হবে না। সমস্ত নীলিম্প বিকল্পের জন্য: https://github.com/blueimp/jQuery-File-Upload/wiki/Options

$('input[type="file"]').each(function(i){

    // .form_files is my div/section of form for input file and progressbar
    var $progressbar = $(this).parents('.form_files:first').find('.progress-bar:first');

    var $image_format = 'jpg|jpeg|jpe|png|gif';
    var $audio_format = 'mp3|mpeg';
    var $all_formats = $image_format + '|' + $audio_format;

    var $image_size = 2;
    var $audio_size = 10;
    var mb = 1048576;

    $(this).fileupload({
        // ...
        singleFileUploads: false,   // << send all together, not single
        // ...
        add: function (e, data) {

            // array with all indexes of files with errors
            var error_uploads_indexes = [];

            // when add file - each file
            $.each(data.files, function(index, file) {

                // array for all errors
                var uploadErrors = [];


                // validate all formats first
                if($all_formats){

                    // check all formats first - before size
                    var acceptFileTypes = "(\.|\/)(" + $all_formats + ")$";
                    acceptFileTypes = new RegExp(acceptFileTypes, "i");

                    // when wrong format
                    if(data.files[index]['type'].length && !acceptFileTypes.test(data.files[index]['type'])) {
                        uploadErrors.push('Not an accepted file type');

                    }else{

                        // default size is image_size
                        var $my_size = $image_size;

                            // check audio format
                            var acceptFileTypes = "(\.|\/)(" + $audio_format + ")$";
                            acceptFileTypes = new RegExp(acceptFileTypes, "i");

                            // alert(data.files[index]['type']);
                            // alert(acceptFileTypes.test('audio/mpeg'));

                            // if is audio then size is audio_size
                            if(data.files[index]['type'].length && acceptFileTypes.test(data.files[index]['type'])) {
                                $my_size = $audio_size;
                            }

                        // check size
                        if(data.files[index]['size'] > $my_size * mb) {
                            uploadErrors.push('Filesize is too big');
                        };
                    };

                }; // << all_formats

                // when errors
                if(uploadErrors.length > 0) {
                    //  alert(uploadErrors.join("\n"));

                    // mark index of error file
                    error_uploads_indexes.push(index);
                    // alert error
                    alert(uploadErrors.join("\n"));

                };

            }); // << each


            // remove indexes (files) with error
            data.files = $.grep( data.files, function( n, i ) {
                return $.inArray(i, error_uploads_indexes) ==-1;
            });


            // if are files to upload
            if(data.files.length){
                // upload by ajax
                var jqXHR = data.submit().done(function (result, textStatus, jqXHR) {
                        //...
                     alert('done!') ;
                        // ...
                });
            } // 

        }, // << add
        progressall: function (e, data) {
            var progress = parseInt(data.loaded / data.total * 100, 10);
            $progressbar.css(
                'width',
                progress + '%'
                );
        }
    }); // << file_upload

    //          
}); // << each input file

1

ইভেন্ট ইভেন্ট যোগ করার জন্য ইভেন্ট হ্যান্ডলারের একটি উদাহরণ। ধরে নেওয়া যায় যে সিঙ্গলফাইলআপলোডগুলি সক্ষম করা আছে (যা পূর্বনির্ধারিত)। আরও jQuery ফাইল আপলোড ডকুমেন্টেশন পড়ুন কীভাবে অ্যাড / ফাইল আপলোডলোড ইভেন্টের সাথে আবদ্ধ করতে পারেন। লুপের অভ্যন্তরে আপনি এই বা ফাইল দুটি ভার ব্যবহার করতে পারেন । আকারের সম্পত্তি পাওয়ার একটি উদাহরণ: এটি ['আকার'] বা ফাইল.সাইজ

    /**
     * Handles Add event
     */
    base.eventAdd = function(e, data) {

        var errs = [];
        var acceptFileTypes = /(\.|\/)(gif|jpe?g|png)$/i;
        var maxFileSize = 5000000;

        // Validate file
        $.each(data.files, function(index, file) {
            if (file.type.length && !acceptFileTypes.test(file.type)) {
                errs.push('Selected file "' + file.name + '" is not alloawed. Invalid file type.');
            }
            if (this['size'] > maxFileSize) {
                errs.push('Selected file "' + file.name + '" is too big, ' + parseInt(file.size / 1024 / 1024) + 'M.. File should be smaller than ' + parseInt(maxFileSize / 1024 / 1024) + 'M.');
            }
        });

        // Output errors or submit data
        if (errs.length > 0) {
            alert('An error occured. ' + errs.join(" "));
        } else {
            data.submit();
        }
    };

1

এটি ক্রোমে আমার জন্য কাজ করেছে, jquery.fileupload.js সংস্করণটি 5.42.3

     add: function(e, data) {
        var uploadErrors = [];
        var ext = data.originalFiles[0].name.split('.').pop().toLowerCase();
        if($.inArray(ext, ['odt','docx']) == -1) {
            uploadErrors.push('Not an accepted file type');
        }
        if(data.originalFiles[0].size > (2*1024*1024)) {//2 MB
            uploadErrors.push('Filesize is too big');
        }
        if(uploadErrors.length > 0) {
            alert(uploadErrors.join("\n"));
        } else {
            data.submit();
        }
    },

4
ধন্যবাদ 9.21 এও কাজ করে।
geca

1
.fileupload({
    add: function (e, data) { 
        var attachmentValue = 3 * 1000 * 1024;
        var totalNoOfFiles = data.originalFiles.length;
        for (i = 0; i < data.originalFiles.length; i++) {
            if (data.originalFiles[i]['size'] > attachmentValue) {
                $attachmentsList.find('.uploading').remove();
                $attachmentMessage.append("<li>" + 'Uploaded bytes exceeded the file size' + "</li>");
                $attachmentMessage.show().fadeOut(10000, function () {
                    $attachmentMessage.html('');
                });
                data.originalFiles.splice(i, 1);
            }
        }
        if (data.files[0]) {
            $attachmentsList
           .prepend('<li class="uploading" class="clearfix loading-content">' + data.files[0].name + '</li>');
        }
        data.submit();                    
    }

1

যদি কেউ সার্ভার দ্বারা সাধারণত সমর্থিত ফর্ম্যাটগুলির সন্ধান করে

3g2|3gp|3gp2|3gpp|aac|aaf|aca|accdb|accde|accdt|acx|adt|adts|afm|ai|aif|aifc|aiff|appcache|application|art|asd|asf|asi|asm|asr|asx|atom|au|avi|axs|bas|bcpio|bin|bmp|c|cab|calx|cat|cdf|chm|class|clp|cmx|cnf|cod|cpio|cpp|crd|crl|crt|csh|css|csv|cur|dcr|deploy|der|dib|dir|disco|dll|dllconfig|dlm|doc|docm|docx|dot|dotm|dotx|dsp|dtd|dvi|dvr-ms|dwf|dwp|dxr|eml|emz|eot|eps|esd|etx|evy|exe|execonfig|fdf|fif|fla|flr|flv|gif|gtar|gz|h|hdf|hdml|hhc|hhk|hhp|hlp|hqx|hta|htc|htm|html|htt|hxt|ico|ics|ief|iii|inf|ins|isp|IVF|jar|java|jck|jcz|jfif|jpb|jpe|jpeg|jpg|js|json|jsonld|jsx|latex|less|lit|lpk|lsf|lsx|lzh|m13|m14|m1v|m2ts|m3u|m4a|m4v|man|manifest|map|mdb|mdp|me|mht|mhtml|mid|midi|mix|mmf|mno|mny|mov|movie|mp2|mp3|mp4|mp4v|mpa|mpe|mpeg|mpg|mpp|mpv2|ms|msi|mso|mvb|mvc|nc|nsc|nws|ocx|oda|odc|ods|oga|ogg|ogv|one|onea|onepkg|onetmp|onetoc|onetoc2|osdx|otf|p10|p12|p7b|p7c|p7m|p7r|p7s|pbm|pcx|pcz|pdf|pfb|pfm|pfx|pgm|pko|pma|pmc|pml|pmr|pmw|png|pnm|pnz|pot|potm|potx|ppam|ppm|pps|ppsm|ppsx|ppt|pptm|pptx|prf|prm|prx|ps|psd|psm|psp|pub|qt|qtl|qxd|ra|ram|rar|ras|rf|rgb|rm|rmi|roff|rpm|rtf|rtx|scd|sct|sea|setpay|setreg|sgml|sh|shar|sit|sldm|sldx|smd|smi|smx|smz|snd|snp|spc|spl|spx|src|ssm|sst|stl|sv4cpio|sv4crc|svg|svgz|swf|t|tar|tcl|tex|texi|texinfo|tgz|thmx|thn|tif|tiff|toc|tr|trm|ts|tsv|ttf|tts|txt|u32|uls|ustar|vbs|vcf|vcs|vdx|vml|vsd|vss|vst|vsto|vsw|vsx|vtx|wav|wax|wbmp|wcm|wdb|webm|wks|wm|wma|wmd|wmf|wml|wmlc|wmls|wmlsc|wmp|wmv|wmx|wmz|woff|woff2|wps|wri|wrl|wrz|wsdl|wtv|wvx|x|xaf|xaml|xap|xbap|xbm|xdr|xht|xhtml|xla|xlam|xlc|xlm|xls|xlsb|xlsm|xlsx|xlt|xltm|xltx|xlw|xml|xof|xpm|xps|xsd|xsf|xsl|xslt|xsn|xtp|xwd|z|zip

0

আপনি যেমন একটি অতিরিক্ত ফাংশন ব্যবহার করতে পারেন:

    function checkFileType(filename, typeRegEx) {
        if (filename.length < 4 || typeRegEx.length < 1) return false;
        var filenameParts = filename.split('.');
        if (filenameParts.length < 2) return false;
        var fileExtension = filenameParts[filenameParts.length - 1];
        return typeRegEx.test('.' + fileExtension);
    }

0

এটিকে কার্যকর করতে আপনার jquery.fileupload-process.js এবং jquery.fileupload- validate.js অন্তর্ভুক্ত করা উচিত ।

তারপরে ...

$(this).fileupload({
    // ...
    processfail: function (e, data) {
        data.files.forEach(function(file){
            if (file.error) {
                self.$errorMessage.html(file.error);
                return false;
            }
        });
    },
//...
}

একটি বৈধতা ব্যর্থ হওয়ার পরে প্রসেসফেল কলব্যাক চালু হয়।


0
  • আপনি ফাইল টাইপ চেক করতে ফাইল এক্সটেনশনও ব্যবহার করতে পারেন।
  • আরও সহজ উপায় হ'ল নীচে দেওয়া কিছু হিসাবে কিছু করা যুক্ত করুন:

    add : function (e,data){
       var extension = data.originalFiles[0].name.substr( 
       (data.originalFiles[0].name.lastIndexOf('.') +1) );
                switch(extension){
                    case 'csv':
                    case 'xls':
                    case 'xlsx':
                        data.url = <Your URL>; 
                        data.submit();
                    break;
                    default:
                        alert("File type not accepted");
                    break;
                }
      }
    

0

আপনার যদি একাধিক ফাইল থাকে তবে প্রতিটি ফাইলের ফর্ম্যাট যাচাই করার জন্য আপনি একটি লুপ ব্যবহার করেন something

add: function(e, data) {
        data.url = 'xx/';
        var uploadErrors = [];
         var acceptFileTypes = /^image\/(gif|jpe?g|png)$/i;
        console.log(data.originalFiles);
        for (var i = 0; i < data.originalFiles.length; i++) {
            if(data.originalFiles[i]['type'].length && !acceptFileTypes.test(data.originalFiles[i]['type'])) {
                    uploadErrors.push('Not an accepted file type');
                    data.originalFiles
                }
                if(data.originalFiles[i]['size'].length && data.originalFiles[i]['size'] > 5000000) {
                    uploadErrors.push('Filesize is too big');
                }
                if(uploadErrors.length > 0) {

                      alert(uploadErrors.join("\n"));
                }
        }
        data.submit();
      },
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.