[c#] Blueimp Multi-Datei-Uploader mit ASP.NET MVC 3


0 Answers

Um die Dateien zu erhalten, die Sie verwenden könnten,

foreach (string inputTagName in Request.Files)
{                
    HttpPostedFileBase file = Request.Files[inputTagName];
}
Question

Ich versuche, Blueimp File Upload zu einer MVC-Anwendung hinzuzufügen, und ich habe Probleme mit dem Empfangen der Dateien in der Post-Aktion (ich gehe für die Multi-Datei-Upload-Funktion). Kann jemand bitte helfen, mir das herauszufinden?

Aus meiner Sicht habe ich den folgenden Code:

<form id="file_upload" enctype="multipart/form-data" action="Home/SaveFile" method="post">    
   <input type="file" name="file" multiple="true"/>
   <button>Upload</button>
   <div>Upload files</div>        
</form>
<br />
###############################
<table id="files">
</table>

<button id="start_uploads">Start uploads</button>
<button id="cancel_uploads">Cancel uploads</button>

Der JQuery-Code für den Upload von blueimp-Dateien lautet wie folgt:

$(document).ready(function () {

        $('#file_upload').fileUploadUI({
            uploadTable: $('#files'),
            downloadTable: $('#files'),
            buildUploadRow: function (files, index) {
                return $('<tr><td class="file_upload_preview"><\/td>' +
                        '<td>' + files[index].name + '<\/td>' +
                        '<td class="file_upload_progress"><div><\/div><\/td>' +
                        '<td class="file_upload_start">' +
                        '<button class="ui-state-default ui-corner-all" title="Start Upload">' +
                        '<span class="ui-icon ui-icon-circle-arrow-e">Start Upload<\/span>' +
                        '<\/button><\/td>' +
                        '<td class="file_upload_cancel">' +
                        '<button class="ui-state-default ui-corner-all" title="Cancel">' +
                        '<span class="ui-icon ui-icon-cancel">Cancel<\/span>' +
                        '<\/button><\/td><\/tr>');
            },
            buildDownloadRow: function (file) {
                return $('<tr><td>' + file.name + '<\/td><\/tr>');
            },
            beforeSend: function (event, files, index, xhr, handler, callBack) {
                handler.uploadRow.find('.file_upload_start button').click(callBack);
            }
        });
        $('#start_uploads').click(function () {
            $('.file_upload_start button').click();
        });
        $('#cancel_uploads').click(function () {
            $('.file_upload_cancel button').click();
        });
    });

Und im Controller die folgende Aktionsmethode:

[AcceptVerbs(HttpVerbs.Post)]
    public ActionResult SaveFile(IEnumerable<HttpPostedFileBase> files)
    {
        foreach (HttpPostedFileBase file in files)
        {
            //some file upload magic                
        }
        return View("MyView");
    }

Ich benutze MVC 3.

Wenn das Argument vom Typ IEnumerable ist, erhält es in der Aktionsmethode null, und wenn das Argument vom Typ HttpPostedFileBase ist, empfängt es die Dateien auf eine seltsame Weise, und die Aktionsmethode funktioniert nicht wie erwartet.

Jede Art von Hilfe wird sehr geschätzt, danke.

Prost!




Related