কেউ কীভাবে jQuery ফাইল আপলোড প্লাগইন প্রয়োগ করতে পারে তা ব্যাখ্যা করতে পারেন?


116

সম্পাদনা (অক্টোবর 2019):

6 বছর পরে এবং jQuery ফাইল আপলোড স্পষ্টভাবে এখনও লোকেদের উন্মাদনা চালাচ্ছে। যদি আপনি এখানে উত্তরগুলিতে সামান্য স্বচ্ছন্দতা খুঁজে পান তবে একটি আধুনিক বিকল্পের জন্য এনপিএম অনুসন্ধানের চেষ্টা করুন । আমি ঝামেলা করার মতো নয়, আমি প্রতিশ্রুতি দিচ্ছি।

আমি পূর্ববর্তী সম্পাদনায় আপলোডের প্রস্তাব দিয়েছিলাম তবে একজন মন্তব্যকারী হিসাবে উল্লেখ করেছে যে তারা আর কোনও ফ্রি সংস্করণ সরবরাহ করবে না। Uploadify ছিল তাই 2013 যাহাই হউক না কেন।


সম্পাদনা করুন:

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


পটভূমি

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

  • আমার বিদ্যমান পৃষ্ঠাগুলির যে কোনওটিতে আপলোডার অন্তর্ভুক্ত করুন
  • আপলোড করা ফাইলগুলির জন্য ডিরেক্টরি পরিবর্তন করুন

প্লাগইনটির জন্য সমস্ত ফাইলগুলি মূলের নীচে একটি ফোল্ডারে অবস্থিত।

আমি চেষ্টা করেছিলাম...

  • ডেমো পৃষ্ঠাটি রুটে সরানো এবং প্রয়োজনীয় স্ক্রিপ্টগুলির জন্য পাথ আপডেট করা
  • এখানে প্রস্তাবিত হিসাবে আপলোডহ্যান্ডলিআরপিএফ ফাইলটিতে 'আপলোড_ডির' এবং 'আপলোড_আরল' বিকল্পগুলি পরিবর্তন করা হচ্ছে ।
  • ডেমো জাভাস্ক্রিপ্টের দ্বিতীয় লাইনে ইউআরএল পরিবর্তন করা

সব ক্ষেত্রে, প্রিভিউ শো, এবং প্রগতি দণ্ড রান, কিন্তু ফাইল আপলোড করতে ব্যর্থ, আর আমি কনসোলে এই ত্রুটি পাবেন: Uncaught TypeError: Cannot read property 'files' of undefined। প্লাগিনের সমস্ত অংশগুলি কীভাবে কাজ করে যা ডিবাগ করা কঠিন করে তুলছে তা আমি বুঝতে পারি না।

কোড

ডেমো পৃষ্ঠায় জাভাস্ক্রিপ্ট:

$(function () {
'use strict';
// Change this to the location of your server-side upload handler:
var url = 'file_upload/server/php/UploadHandler.php',
    uploadButton = $('<button/>')
        .addClass('btn')
        .prop('disabled', true)
        .text('Processing...')
        .on('click', function () {
            var $this = $(this),
                data = $this.data();
            $this
                .off('click')
                .text('Abort')
                .on('click', function () {
                    $this.remove();
                    data.abort();
                });
            data.submit().always(function () {
                $this.remove();
            });
        });
$('#fileupload').fileupload({
    url: url,
    dataType: 'json',
    autoUpload: false,
    acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
    maxFileSize: 5000000, // 5 MB
    // Enable image resizing, except for Android and Opera,
    // which actually support image resizing, but fail to
    // send Blob objects via XHR requests:
    disableImageResize: /Android(?!.*Chrome)|Opera/
        .test(window.navigator.userAgent),
    previewMaxWidth: 100,
    previewMaxHeight: 100,
    previewCrop: true
}).on('fileuploadadd', function (e, data) {
    data.context = $('<div/>').appendTo('#files');
    $.each(data.files, function (index, file) {
        var node = $('<p/>')
                .append($('<span/>').text(file.name));
        if (!index) {
            node
                .append('<br>')
                .append(uploadButton.clone(true).data(data));
        }
        node.appendTo(data.context);
    });
}).on('fileuploadprocessalways', function (e, data) {
    var index = data.index,
        file = data.files[index],
        node = $(data.context.children()[index]);
    if (file.preview) {
        node
            .prepend('<br>')
            .prepend(file.preview);
    }
    if (file.error) {
        node
            .append('<br>')
            .append(file.error);
    }
    if (index + 1 === data.files.length) {
        data.context.find('button')
            .text('Upload')
            .prop('disabled', !!data.files.error);
    }
}).on('fileuploadprogressall', function (e, data) {
    var progress = parseInt(data.loaded / data.total * 100, 10);
    $('#progress .bar').css(
        'width',
        progress + '%'
    );
}).on('fileuploaddone', function (e, data) {
    $.each(data.result.files, function (index, file) {
        var link = $('<a>')
            .attr('target', '_blank')
            .prop('href', file.url);
        $(data.context.children()[index])
            .wrap(link);
    });
}).on('fileuploadfail', function (e, data) {
    $.each(data.result.files, function (index, file) {
        var error = $('<span/>').text(file.error);
        $(data.context.children()[index])
            .append('<br>')
            .append(error);
    });
}).prop('disabled', !$.support.fileInput)
    .parent().addClass($.support.fileInput ? undefined : 'disabled');
});


দলিলের অভাবে আমি অবাক; দেখে মনে হচ্ছে এটি পরিবর্তন করা সহজ জিনিস হওয়া উচিত। কেউ যদি এটি কীভাবে ব্যাখ্যা করতে পারে তবে আমি প্রশংসা করব।


10
ভাল প্রশ্ন বিন্যাস। সংগঠনটি দেখে ভাল লাগল।
jdero

ত্রুটি লাইনের ঠিক আগে কনসোলে 'ই' এবং 'ডেটা' মুদ্রণ করুন, মানগুলি কী?
জন 4d5

3
Uploadi অর্থবছরে হয় MIT- র লাইসেন্স যেমন এটা সম্পূর্ণ বিনামূল্যে। তবে, একই দেব / ওয়েবসাইট থেকে আপলোড ফাইভ ব্যবহারের উপর নির্ভর করে $ 5- $ 100
মার্টিনজেএইচ

2
দুই বছরে jQuery- ফাইল-আপলোড ডকুমেন্টেশনের কোনও উন্নতি হয়নি। আহা।
চক লে বাট

1
@ মার্টিনজেএইচ-র কিছু সময় আপলোড হতে পারে, তবে এখন পর্যন্ত কেবলমাত্র একটিই রয়েছে - পেইড আপলোডআইফাইভ সংস্করণ। এবং কোন ডেমো আছে; এটি কিন্তু একটি ভিডিও। খারাপ ফর্ম।
স্টিভ হরভাথ

উত্তর:


72

আমি কিছুদিন আগে একটি অনুরূপ কার্যকারিতা খুঁজছিলাম এবং টিউটোরিয়ালজাইনের একটি ভাল টিউটোরিয়াল জুড়ে এসেছি। এখানে একটি কাজের উদাহরণ। সম্পূর্ণ টিউটোরিয়াল এখানে পাওয়া যাবে

ফাইল আপলোড সংলাপটি ধরে রাখতে সাধারণ ফর্ম:

<form id="upload" method="post" action="upload.php" enctype="multipart/form-data">
  <input type="file" name="uploadctl" multiple />
  <ul id="fileList">
    <!-- The file list will be shown here -->
  </ul>
</form>

এবং ফাইলগুলি আপলোড করার জন্য এখানে jQuery কোড রয়েছে:

$('#upload').fileupload({

  // This function is called when a file is added to the queue
  add: function (e, data) {
    //This area will contain file list and progress information.
    var tpl = $('<li class="working">'+
                '<input type="text" value="0" data-width="48" data-height="48" data-fgColor="#0788a5" data-readOnly="1" data-bgColor="#3e4043" />'+
                '<p></p><span></span></li>' );

    // Append the file name and file size
    tpl.find('p').text(data.files[0].name)
                 .append('<i>' + formatFileSize(data.files[0].size) + '</i>');

    // Add the HTML to the UL element
    data.context = tpl.appendTo(ul);

    // Initialize the knob plugin. This part can be ignored, if you are showing progress in some other way.
    tpl.find('input').knob();

    // Listen for clicks on the cancel icon
    tpl.find('span').click(function(){
      if(tpl.hasClass('working')){
              jqXHR.abort();
      }
      tpl.fadeOut(function(){
              tpl.remove();
      });
    });

    // Automatically upload the file once it is added to the queue
    var jqXHR = data.submit();
  },
  progress: function(e, data){

        // Calculate the completion percentage of the upload
        var progress = parseInt(data.loaded / data.total * 100, 10);

        // Update the hidden input field and trigger a change
        // so that the jQuery knob plugin knows to update the dial
        data.context.find('input').val(progress).change();

        if(progress == 100){
            data.context.removeClass('working');
        }
    }
});
//Helper function for calculation of progress
function formatFileSize(bytes) {
    if (typeof bytes !== 'number') {
        return '';
    }

    if (bytes >= 1000000000) {
        return (bytes / 1000000000).toFixed(2) + ' GB';
    }

    if (bytes >= 1000000) {
        return (bytes / 1000000).toFixed(2) + ' MB';
    }
    return (bytes / 1000).toFixed(2) + ' KB';
}

এবং এখানে ডেটা প্রক্রিয়া করার জন্য পিএইচপি কোড নমুনা রয়েছে:

if($_POST) {
    $allowed = array('jpg', 'jpeg');

    if(isset($_FILES['uploadctl']) && $_FILES['uploadctl']['error'] == 0){

        $extension = pathinfo($_FILES['uploadctl']['name'], PATHINFO_EXTENSION);

        if(!in_array(strtolower($extension), $allowed)){
            echo '{"status":"error"}';
            exit;
        }

        if(move_uploaded_file($_FILES['uploadctl']['tmp_name'], "/yourpath/." . $extension)){
            echo '{"status":"success"}';
            exit;
        }
        echo '{"status":"error"}';
    }
    exit();
}

উপরের কোডটি যে কোনও বিদ্যমান ফর্মটিতে যুক্ত করা যেতে পারে। এই প্রোগ্রামটি একবার যুক্ত হয়ে গেলে ছবিগুলি স্বয়ংক্রিয়ভাবে আপলোড করে। আপনি নিজের বিদ্যমান ফর্মটি জমা দেওয়ার সময় এই কার্যকারিতাটি পরিবর্তন করা যেতে পারে এবং আপনি চিত্রটি জমা দিতে পারেন।

আমার উত্তরটি প্রকৃত কোড সহ আপডেট করেছে। কোডের মূল লেখকের কাছে সমস্ত ক্রেডিট।

সূত্র: http://tutorialzine.com/2013/05/mini-ajax-file-upload-form/


2
আপনি কি এখানে টিউটোরিয়ালটির গুরুত্বপূর্ণ অংশগুলি অনুলিপি করতে পারেন, তাই যদি এটি অদৃশ্য হয়ে যায় তবে আপনার উত্তরটি এখনও কার্যকর?

1
তবে চৌর্যবৃত্তি না করা সম্পর্কে সতর্ক থাকুন
টাকাসওয়েল

1
মনোযোগ: পিএইচপি কোড স্নিপেট ব্যবহার করে যে কেউ if($_POST) বিবৃতি সরিয়ে ফেলুন । পোস্টের ফাইলটি প্রেরণে পোস্টটি খালি থাকার কথা $_FILES['upfile']['tmp_name']। আশা করি এটি কারও কিছুটা সময় সাশ্রয় করবে।
এডওয়ার্ড

1
আরেকটি সি
শরপকর্নার

উপরের স্ক্রিপ্টটি চালানোর জন্য যে জেএস / জেকুরি ফাইলগুলি দরকার সেগুলি কি কেউ আমাকে পরামর্শ দিতে পারে
মনসা

28

আমি মাত্র 2 ঘন্টা jQuery আপলোডের সাথে লড়াই করে কাটিয়েছি কিন্তু নির্ভরতার পরিমাণের কারণে ছেড়ে দিয়েছি (সমস্ত ঘণ্টা এবং হুইসেল পেতে আমার 13 টি জেএস ফাইল অন্তর্ভুক্ত ছিল)।

আমি আরও কিছুটা অনুসন্ধান করেছি এবং ড্রপজোন.জেএস নামে একটি ঝরঝরে প্রকল্প পেয়েছি , যার কোনও নির্ভরতা নেই।

লেখক একটি বুটস্ট্র্যাপ ডেমোও তৈরি করেছেন যা jQuery ফাইল আপলোড প্লাগইন দ্বারা অনুপ্রাণিত হয়েছিল।

আমি আশা করি এটি অন্য কারও কিছুটা সময় সাশ্রয় করে।


1
গুরুত্বপূর্ণ বিষয়: দ্রপজোন.জেগুলি দেখতে দুর্দান্ত দেখায় তবে এটি কেবল আইই 10 এবং এর থেকে উচ্চতর সমর্থন করে।
আইকি 6

11
jQuery ফাইল আপলোড এটির কাজটি করা অসম্ভব ... আমি অনেক ঘন্টা চেষ্টা করে প্রেরণ করেছি কারণ এতে খুব সুন্দর বৈশিষ্ট্য রয়েছে তবে শেষ মুহুর্তে আমার আত্মা কেবল যন্ত্রণায় পূর্ণ হয়েছিল !!! কি বিপর্যয় !!! তারপরে আমি আপনার পোস্টটি ড্রপজোন.জেএস সম্পর্কে দেখেছি এবং 5 মিনিটের মধ্যে আমি এটিকে কাজ করতে এবং যেভাবে চাইছিলাম তা করতে পারি! আপনি আমাকে বাঁচিয়েছেন ...

আপনাকে যথেষ্ট ধন্যবাদ জানাতে পারি না, আমি jQuery-FIle- আপলোড পেতে আমার পছন্দ মতো কাজ করতে প্রায় 12 ঘন্টা সময় ব্যয় করেছি এবং অবশেষে আমি এই প্রশ্নটিতে হোঁচট খেয়েছি । তুমি আমাকে বাঁচালে.
এনডিডি

এখানে একটি ডেটাবেস চালিত jquery ফাইল আপলোড উদাহরণ রয়েছে: github.com/CodeHeight/ আইজামলিবারি
JoshYates1980

আমি 3 দিন অতিবাহিত করেছি তবে আমি এখনও তাদের কোড কাস্টম করতে পারি না
মে ওয়েদার ভিএন

4

আমি এটির সাথেও লড়াই করেছিলাম তবে একবার এটি বুঝতে পেরেছিলাম যে আপলোডহ্যান্ডলিআরপিপিতে পথগুলি কীভাবে কাজ করে: আপলোড_ডির এবং আপলোড_আরল এটির কাজটি দেখার জন্য একমাত্র সেটিংস সম্পর্কে। ডিবাগিং তথ্যের জন্য আপনার সার্ভার ত্রুটি লগগুলিও পরীক্ষা করে দেখুন।


3

ড্রপার জেকুরি প্লাগইন ব্যবহার করে চিত্রের পূর্বরূপ সহ চিত্র টানুন এবং ড্রপ আপলোডারটি দেখুন।

এইচটিএমএল

<div class="target" width="78" height="100"><img /></div>

জাতীয়

$(".target").dropper({
    action: "upload.php",

}).on("start.dropper", onStart);
function onStart(e, files){
console.log(files[0]);

    image_preview(files[0].file).then(function(res){
$('.dropper-dropzone').empty();
//$('.dropper-dropzone').css("background-image",res.data);
 $('#imgPreview').remove();        
$('.dropper-dropzone').append('<img id="imgPreview"/><span style="display:none">Drag and drop files or click to select</span>');
var widthImg=$('.dropper-dropzone').attr('width');
        $('#imgPreview').attr({width:widthImg});
    $('#imgPreview').attr({src:res.data});

    })

}

function image_preview(file){
    var def = new $.Deferred();
    var imgURL = '';
    if (file.type.match('image.*')) {
        //create object url support
        var URL = window.URL || window.webkitURL;
        if (URL !== undefined) {
            imgURL = URL.createObjectURL(file);
            URL.revokeObjectURL(file);
            def.resolve({status: 200, message: 'OK', data:imgURL, error: {}});
        }
        //file reader support
        else if(window.File && window.FileReader)
        {
            var reader = new FileReader();
            reader.readAsDataURL(file);
            reader.onloadend = function () {
                imgURL = reader.result;
                def.resolve({status: 200, message: 'OK', data:imgURL, error: {}});
            }
        }
        else {
            def.reject({status: 1001, message: 'File uploader not supported', data:imgURL, error: {}});
        }
    }
    else
        def.reject({status: 1002, message: 'File type not supported', error: {}});
    return def.promise();
}

$('.dropper-dropzone').mouseenter(function() {
 $( '.dropper-dropzone>span' ).css("display", "block");
});

$('.dropper-dropzone').mouseleave(function() {
 $( '.dropper-dropzone>span' ).css("display", "none");
});

সিএসএস

.dropper-dropzone{
    width:78px;
padding:3px;
    height:100px;
position: relative;
}
.dropper-dropzone>img{
    width:78px;
    height:100px;
margin-top=0;
}

.dropper-dropzone>span {
    position: absolute;
    right: 10px;
    top: 20px;
color:#ccc;


}

.dropper .dropper-dropzone{

padding:3px !important    
}

ডেমো জেসফিডাল


এটি একটি অত্যন্ত সহজ সমাধান।
মিরন

2

ফাইল আপলোড করার জন্য এটি ভাল কৌণিক প্লাগইন এবং এটি বিনামূল্যে!

কৌনিক ফাইল আপলোড


2
ওহে. দয়া করে লিঙ্কগুলি উত্তর হিসাবে পোস্ট করবেন না, যদি সাইটটি অফলাইনে চলে যায় বা লিঙ্কটি পরিবর্তন হয় তবে আপনার উত্তরটি অকেজো হয়ে যাবে। পরিবর্তে, আপনার উত্তর তৈরি করতে সাইটের তথ্যটি ব্যবহার করুন এবং লিঙ্কটি কেবল রেফারেন্স হিসাবে ব্যবহার করুন। ধন্যবাদ।
চথুলহু

1

আমি এই প্লাগইনটির সাথে কিছুটা সময় রেলে লড়াই করেছি এবং তারপরে কেউ আমার তৈরি সমস্ত কোডকে অপ্রচলিত করে এটি রত্ন করেছে।

যদিও দেখে মনে হচ্ছে আপনি এটি রিলে ব্যবহার করছেন না, তবে যদি কেউ এটি ব্যবহার করে তবে এই রত্নটি চেকআউট করে । উত্সটি এখানে -> jQueryFileUpload রেল

হালনাগাদ:

মন্তব্যকারীকে সন্তুষ্ট করার জন্য আমি আমার উত্তর আপডেট করেছি। মূলত " এই রত্নটি ব্যবহার করুন , এখানে উত্স কোডটি " এটি যদি অদৃশ্য হয়ে যায় তবে দীর্ঘ পথ এটি করুন।



1

ড্রপলি.জেএস এর জন্য উপযুক্ত। এটি সহজ এবং বাক্সের বাইরে কাজ করে এমন একটি ডেমো সাইট সহ প্রাক-প্যাকেজযুক্ত রয়েছে।


0

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

বাস্তবায়ন সহজ, ব্রাউজার সমর্থন নিখুঁত।


7
ফ্ল্যাশ প্রয়োজন ... :(
ইভা

2
আপনি এইচটিএমএল 5 সংস্করণ ব্যবহার করতে পারেন :)
কর্সায়ার

5
যদি আমি ভুল না হয়ে থাকি তবে আপলোডের এইচটিএমএল 5 সংস্করণটি বিনামূল্যে নয়। এটির দাম $ 5 uploadify.com/download
0112

2
তবে, এটি কেবল 5 $ 500 নয়
কর্সআর

7
মনে রাখবেন, আপনি যদি বাণিজ্যিক উদ্দেশ্যে আপলোড ব্যবহার করতে চান তবে বাণিজ্যিক লাইসেন্স কিনতে হবে (১০০ ডলার) আপলোড করুনডাউনলোড
টিম

0

ইউএসআই প্লাগইনের জন্য, জেএসপি পৃষ্ঠা এবং স্প্রিং এমভিসি সহ ..

নমুনা এইচটিএমএলফাইলআপলোডের একটি আইডি বৈশিষ্ট্য সহ কোনও ফর্ম উপাদানটির মধ্যে থাকা দরকার

    <!-- The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload -->
<div class="fileupload-buttonbar">
    <div>
        <!-- The fileinput-button span is used to style the file input field as button -->
        <span class="btn btn-success fileinput-button">
            <i class="glyphicon glyphicon-plus"></i>
            <span>Add files</span>
            <input id="fileuploadInput" type="file" name="files[]" multiple>
        </span>
        <%-- https://stackoverflow.com/questions/925334/how-is-the-default-submit-button-on-an-html-form-determined --%>
        <button type="button" class="btn btn-primary start">
            <i class="glyphicon glyphicon-upload"></i>
            <span>Start upload</span>
        </button>
        <button type="reset" class="btn btn-warning cancel">
            <i class="glyphicon glyphicon-ban-circle"></i>
            <span>Cancel upload</span>
        </button>
        <!-- The global file processing state -->
        <span class="fileupload-process"></span>
    </div>
    <!-- The global progress state -->
    <div class="fileupload-progress fade">
        <!-- The global progress bar -->
        <div class="progress progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100">
            <div class="progress-bar progress-bar-success" style="width:0%;"></div>
        </div>
        <!-- The extended global progress state -->
        <div class="progress-extended">&nbsp;</div>
    </div>
</div>
<!-- The table listing the files available for upload/download -->
<table role="presentation" class="table table-striped"><tbody class="files"></tbody></table>

<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/js/jquery-file-upload-9.14.2/css/jquery.fileupload.css">
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/js/jquery-file-upload-9.14.2/css/jquery.fileupload-ui.css">

<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-file-upload-9.14.2/js/vendor/jquery.ui.widget.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-file-upload-9.14.2/js/jquery.iframe-transport.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-file-upload-9.14.2/js/jquery.fileupload.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-file-upload-9.14.2/js/jquery.fileupload-process.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-file-upload-9.14.2/js/jquery.fileupload-validate.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-file-upload-9.14.2/js/jquery.fileupload-ui.js"></script>

<script type="text/javascript">
    $(document).ready(function () {
            var maxFileSizeBytes = ${maxFileSizeBytes};
        if (maxFileSizeBytes < 0) {
            //-1 or any negative value means no size limit
            //set to undefined
            ///programming/5795936/how-to-set-a-javascript-var-as-undefined
            maxFileSizeBytes = void 0;
        }

        //https://github.com/blueimp/jQuery-File-Upload/wiki/Options
        ///programming/34063348/jquery-file-upload-basic-plus-ui-and-i18n
        ///programming/11337897/how-to-customize-upload-download-template-of-blueimp-jquery-file-upload
        $('#fileupload').fileupload({
            url: '${pageContext.request.contextPath}/app/uploadResources.do',
            fileInput: $('#fileuploadInput'),
            acceptFileTypes: /(\.|\/)(jrxml|png|jpe?g)$/i,
            maxFileSize: maxFileSizeBytes,
            messages: {
                acceptFileTypes: '${fileTypeNotAllowedText}',
                maxFileSize: '${fileTooLargeMBText}'
            },
            filesContainer: $('.files'),
            uploadTemplateId: null,
            downloadTemplateId: null,
            uploadTemplate: function (o) {
                var rows = $();
                $.each(o.files, function (index, file) {
                    var row = $('<tr class="template-upload fade">' +
                            '<td><p class="name"></p>' +
                            '<strong class="error text-danger"></strong>' +
                            '</td>' +
                            '<td><p class="size"></p>' +
                            '<div class="progress progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0">' +
                            '<div class="progress-bar progress-bar-success" style="width:0%;"></div></div>' +
                            '</td>' +
                            '<td>' +
                            (!index && !o.options.autoUpload ?
                                    '<button class="btn btn-primary start" disabled>' +
                                    '<i class="glyphicon glyphicon-upload"></i> ' +
                                    '<span>${startText}</span>' +
                                    '</button>' : '') +
                            (!index ? '<button class="btn btn-warning cancel">' +
                                    '<i class="glyphicon glyphicon-ban-circle"></i> ' +
                                    '<span>${cancelText}</span>' +
                                    '</button>' : '') +
                            '</td>' +
                            '</tr>');
                    row.find('.name').text(file.name);
                    row.find('.size').text(o.formatFileSize(file.size));
                    if (file.error) {
                        row.find('.error').text(file.error);
                    }
                    rows = rows.add(row);
                });
                return rows;
            },
            downloadTemplate: function (o) {
                var rows = $();
                $.each(o.files, function (index, file) {
                    var row = $('<tr class="template-download fade">' +
                            '<td><p class="name"></p>' +
                            (file.error ? '<strong class="error text-danger"></strong>' : '') +
                            '</td>' +
                            '<td><span class="size"></span></td>' +
                            '<td>' +
                            (file.deleteUrl ? '<button class="btn btn-danger delete">' +
                                    '<i class="glyphicon glyphicon-trash"></i> ' +
                                    '<span>${deleteText}</span>' +
                                    '</button>' : '') +
                            '<button class="btn btn-warning cancel">' +
                            '<i class="glyphicon glyphicon-ban-circle"></i> ' +
                            '<span>${clearText}</span>' +
                            '</button>' +
                            '</td>' +
                            '</tr>');
                    row.find('.name').text(file.name);
                    row.find('.size').text(o.formatFileSize(file.size));
                    if (file.error) {
                        row.find('.error').text(file.error);
                    }
                    if (file.deleteUrl) {
                        row.find('button.delete')
                                .attr('data-type', file.deleteType)
                                .attr('data-url', file.deleteUrl);
                    }
                    rows = rows.add(row);
                });
                return rows;
            }
        });

    });
</script>

নমুনা আপলোড এবং অনুরোধ হ্যান্ডলারগুলি মুছুন

    @PostMapping("/app/uploadResources")
public @ResponseBody
Map<String, List<FileUploadResponse>> uploadResources(MultipartHttpServletRequest request,
        Locale locale) {
    //https://github.com/jdmr/fileUpload/blob/master/src/main/java/org/davidmendoza/fileUpload/web/ImageController.java
    //https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#using-jquery-file-upload-ui-version-with-a-custom-server-side-upload-handler
    Map<String, List<FileUploadResponse>> response = new HashMap<>();
    List<FileUploadResponse> fileList = new ArrayList<>();

    String deleteUrlBase = request.getContextPath() + "/app/deleteResources.do?filename=";

    //http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/multipart/MultipartRequest.html
    Iterator<String> itr = request.getFileNames();
    while (itr.hasNext()) {
        String htmlParamName = itr.next();
        MultipartFile file = request.getFile(htmlParamName);
        FileUploadResponse fileDetails = new FileUploadResponse();
        String filename = file.getOriginalFilename();
        fileDetails.setName(filename);
        fileDetails.setSize(file.getSize());
        try {
            String message = saveFile(file);
            if (message != null) {
                String errorMessage = messageSource.getMessage(message, null, locale);
                fileDetails.setError(errorMessage);
            } else {
                //save successful
                String encodedFilename = URLEncoder.encode(filename, "UTF-8");
                String deleteUrl = deleteUrlBase + encodedFilename;
                fileDetails.setDeleteUrl(deleteUrl);
            }
        } catch (IOException ex) {
            logger.error("Error", ex);
            fileDetails.setError(ex.getMessage());
        }

        fileList.add(fileDetails);
    }

    response.put("files", fileList);

    return response;
}

@PostMapping("/app/deleteResources")
public @ResponseBody
Map<String, List<Map<String, Boolean>>> deleteResources(@RequestParam("filename") List<String> filenames) {
    Map<String, List<Map<String, Boolean>>> response = new HashMap<>();
    List<Map<String, Boolean>> fileList = new ArrayList<>();

    String templatesPath = Config.getTemplatesPath();
    for (String filename : filenames) {
        Map<String, Boolean> fileDetails = new HashMap<>();

        String cleanFilename = ArtUtils.cleanFileName(filename);
        String filePath = templatesPath + cleanFilename;

        File file = new File(filePath);
        boolean deleted = file.delete();

        if (deleted) {
            fileDetails.put(cleanFilename, true);
        } else {
            fileDetails.put(cleanFilename, false);
        }

        fileList.add(fileDetails);
    }

    response.put("files", fileList);

    return response;
}

প্রয়োজনীয় জসন প্রতিক্রিয়া উত্পন্ন করার জন্য নমুনা শ্রেণি

    public class FileUploadResponse {
    //https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#using-jquery-file-upload-ui-version-with-a-custom-server-side-upload-handler

    private String name;
    private long size;
    private String error;
    private String deleteType = "POST";
    private String deleteUrl;

    /**
     * @return the name
     */
    public String getName() {
        return name;
    }

    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * @return the size
     */
    public long getSize() {
        return size;
    }

    /**
     * @param size the size to set
     */
    public void setSize(long size) {
        this.size = size;
    }

    /**
     * @return the error
     */
    public String getError() {
        return error;
    }

    /**
     * @param error the error to set
     */
    public void setError(String error) {
        this.error = error;
    }

    /**
     * @return the deleteType
     */
    public String getDeleteType() {
        return deleteType;
    }

    /**
     * @param deleteType the deleteType to set
     */
    public void setDeleteType(String deleteType) {
        this.deleteType = deleteType;
    }

    /**
     * @return the deleteUrl
     */
    public String getDeleteUrl() {
        return deleteUrl;
    }

    /**
     * @param deleteUrl the deleteUrl to set
     */
    public void setDeleteUrl(String deleteUrl) {
        this.deleteUrl = deleteUrl;
    }

}

Https://pitipata.blogspot.co.ke/2017/01/ using- jquery- file- upload- ui.html দেখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.