Birisi jQuery Dosya Yükleme eklentisinin nasıl uygulanacağını açıklayabilir mi?


117

DÜZENLEME (Ekim 2019):

6 yıl sonra ve jQuery Dosya Yükleme açıkça hala insanları çıldırtıyor. Buradaki cevaplarda biraz teselli buluyorsanız, modern bir alternatif için NPM araştırmasını deneyin . Uğraşmaya değmez, söz veriyorum.

Önceki düzenlemede Uploadify'ı tavsiye ettim ancak bir yorumcunun da belirttiği gibi artık ücretsiz bir sürüm sunmuyorlar. Uploadify oldu böylece yine 2013.


DÜZENLE:

Bu hala trafik alıyor gibi görünüyor, bu yüzden ne yaptığımı açıklayacağım. Sonunda, kabul edilen cevaptaki öğreticiyi izleyerek eklentiyi çalıştırdım. Ancak, jQuery Dosya Yükleme gerçek bir güçlüktür ve daha basit bir dosya yükleme eklentisi arıyorsanız, Uploadify'ı şiddetle tavsiye ederim . Bir yanıtın işaret ettiği gibi, yalnızca ticari olmayan kullanım için ücretsizdir.


Arka fon

Kullanıcıların dosya yüklemesine izin vermek için blueimp'in jQuery Dosya Yüklemesini kullanmaya çalışıyorum . Kurulum talimatlarını izleyerek kutudan çıkar çıkmaz mükemmel çalışır . Ancak web sitemde pratik olarak kullanmak için birkaç şey yapabilmek istiyorum:

  • Yükleyiciyi mevcut sayfalarımdan herhangi birine dahil et
  • Yüklenen dosyalar için dizini değiştirin

Eklentinin tüm dosyaları, kökün altındaki bir klasörde bulunur.

Denedim...

  • Demo sayfasını köke taşımak ve gerekli komut dosyaları için yolları güncellemek
  • UploadHandler.php dosyasındaki 'upload_dir' ve 'upload_url' seçeneklerini burada önerildiği gibi değiştirmek .
  • Demo javascript'inin ikinci satırındaki URL'yi değiştirme

Her durumda, önizleme gösterileri ve ilerleme çubuğu çalışır, ancak dosyalar yüklemek için başarısız ve ben konsolda bu hatayı alıyorum: Uncaught TypeError: Cannot read property 'files' of undefined. Eklentinin tüm bölümlerinin nasıl çalıştığını anlamıyorum, bu da hata ayıklamayı zorlaştırıyor.

kod

Demo sayfasındaki javascript:

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


Belge eksikliği beni şaşırttı; Görünüşe göre değiştirilmesi basit bir şey olmalı. Biri bunun nasıl yapılacağını açıklayabilirse minnettar olurum.


10
İyi soru formatı. Organizasyon görmek güzel.
jdero

Hata satırından hemen önce konsolda 'e' ve 'veri' yazdırın, değerler nelerdir?
john 4d5

3
Uploadi fy MIT lisansıdır, örneğin tamamen ücretsizdir. Bununla birlikte, aynı geliştirici / web sitesinden Uploadi Five , kullanıma bağlı olarak
5-100

2
İki yıl içinde jQuery-File-Upload belgeleri daha iyi hale gelmedi. Ahh.
Chuck Le Butt

1
@MartinJH bir noktada bir yükleme olmuş olabilir, ancak şu an itibariyle sadece bir tane var - ücretli yükleme iFive sürümü. Ve demo da yok; bu sadece bir video. Kötü form.
Steve Horvath

Yanıtlar:


72

Birkaç gün önce benzer bir işlevsellik arıyordum ve öğretici hakkında iyi bir öğretici ile karşılaştım. İşte çalışan bir örnek. Tam eğitim burada bulunabilir .

Dosya yükleme diyaloğunu tutmak için basit form:

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

Ve dosyaları yüklemek için jQuery kodu:

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

Verileri işlemek için PHP kod örneği:

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

Yukarıdaki kod, mevcut herhangi bir forma eklenebilir. Bu program, resimleri eklendikten sonra otomatik olarak yükler. Bu işlevsellik değiştirilebilir ve mevcut formunuzu gönderirken resmi gönderebilirsiniz.

Cevabımı gerçek kodla güncelledi. Tüm krediler kodun orijinal yazarına.

Kaynak: http://tutorialzine.com/2013/05/mini-ajax-file-upload-form/


2
Bu eğiticinin önemli kısımlarını buraya kopyalayabilir misiniz, böylece kaybolursa cevabınız hala yararlı olur?

1
ancak intihal
yapmamaya

1
DİKKAT: PHP kod parçacığını kullanan herkese if($_POST) ifadeyi kaldırın . POST'un dosya içeriğinin gönderildiği boş olması gerekiyor $_FILES['upfile']['tmp_name']. Umarım bu, birine biraz zaman kazandırır.
Edward


Yukarıdaki komut dosyasını çalıştırmak için gereken js / jquery dosyalarının ne olduğunu bana önerebilecek biri var mı
Manasa

28

JQuery Upload ile savaşmak için 2 saatimi harcadım, ancak bağımlılıkların miktarı nedeniyle pes ettim (tüm zilleri ve ıslıkları almak için 13 JS dosyası dahil ettim).

Biraz daha arama yaptım ve herhangi bir bağımlılığı olmayan Dropzone.js adlı temiz bir projeyle karşılaştım .

Yazar ayrıca jQuery File Upload eklentisinden esinlenerek bir önyükleme demosu oluşturdu .

Umarım bu başka birine biraz zaman kazandırır.


1
Unutulmaması gereken önemli şey: Dropzone.js güzel görünüyor, ancak yalnızca IE10 ve üzeri sürümleri destekliyor. jQuery dosya yükleme
IE6'dan

11
jQuery Dosya Yüklemenin çalışmasını sağlamak imkansız ... Çok güzel özelliklere sahip olduğu için saatlerce uğraştım ama son anda ruhum sadece ıstırapla doldu !!! Ne kadar kötü! Sonra Dropzone.js hakkındaki yazınızı gördüm ve 5 dakika içinde istediğim gibi çalışmasını sağlıyorum! Beni kurtardın ...
rigon

Yeterince teşekkür edemem, jQuery-FIle-Upload'u istediğim şekilde çalıştırmak için yaklaşık 12 saat harcadım ve sonunda bu soruya rastladım. Beni kurtardın.
ndd

işte veritabanı odaklı bir jquery dosyası yükleme örneği: github.com/CodeHeight/ImageLibrary
JoshYates1980

3 gün geçirdim ama kodlarını hala özelleştiremiyorum
Mayıs Hava Durumu VN

4

Ben de bununla uğraştım, ancak UploadHandler.php'deki yolların nasıl çalıştığını anladıktan sonra çalıştırdım: upload_dir ve upload_url, çalışmasını sağlamak için bakılması gereken tek ayarlarla ilgili. Ayrıca hata ayıklama bilgileri için sunucu hata günlüklerinizi kontrol edin.


3

Dropper jquery eklentisini kullanarak resim önizleme ile Resim sürükle ve bırak yükleyicisine göz atın.

HTML

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

JS

$(".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");
});

CSS

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

Demo Jsfiddle


Bu son derece basit bir çözümdür.
Miron

2

Bu, dosyaları yüklemek için iyi bir Angular eklentisidir ve ücretsizdir!

açısal dosya yükleme


2
Selam. Lütfen bağlantıları yanıt olarak göndermeyin, site çevrimdışı olursa veya bağlantı değişirse, yanıtınız işe yaramaz hale gelecektir. Bunun yerine, cevabınızı oluşturmak için sitedeki bilgileri kullanın ve bağlantıyı yalnızca referans olarak kullanın. Teşekkürler.
Cthulhu



1

Droply.js bunun için mükemmeldir. Basittir ve kutudan çıkar çıkmaz çalışan bir demo sitesi ile önceden paketlenmiş olarak gelir.


0

Uploadify'ı kullanabilirsiniz , bu kullandığım en iyi multiupload jquery eklentisidir.

Uygulama kolaydır, tarayıcı desteği mükemmeldir.


7
flash gerektirir ... :(
Eva

2
HTML 5 Sürümünü kullanabilirsiniz :)
CORSAIR

5
Yanılmıyorsam, uploadify'ın html5 sürümü ücretsiz değil. 5 dolara mal oluyor. uploadify.com/download
0112

2
Ama bu 500 değil sadece 5 $.
CORSAIR

7
Uploadify'ı ticari amaçlarla kullanmak istiyorsanız, ticari lisansı (100 $) satın almanız gerektiğini unutmayın. Uploadify.com/download/download-uploadifive-commercial
Tim

0

UI eklentisi için, jsp sayfası ve Spring MVC ile ..

Örnek html . Fileupload id özniteliğine sahip bir form öğesi içinde olması gerekir

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

Örnek yükleme ve silme isteği işleyicileri

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

Gerekli json yanıtını oluşturmak için örnek sınıf

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

}

Bkz. Https://pitipata.blogspot.co.ke/2017/01/using-jquery-file-upload-ui.html

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.