使用Angular上传文件时,HttpPostedFileBase为null [英] HttpPostedFileBase is null when uploading files with Angular

查看:86
本文介绍了使用Angular上传文件时,HttpPostedFileBase为null的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将Angular与MVC结合使用.当我要上传文件时, HttpPostedFileBase 为空.

I use Angular in combination with MVC. When I want to upload a file, the HttpPostedFileBase is null.

html:

<input type="file" data-ng-model="fileName" onchange="angular.element(this).scope().fileInputChanged(this)">

角度:

scope.fileInputChanged = function (element) {
    scope.$apply(function (scope) {
        console.log('files:', element.files);

        _.each(element.files, function (element, index, list) {
            scope.files.push(element);
        });
    });
}

scope.uploadDocuments = function () {
    var formData = new FormData();

    // add uploaded files to form data object
    for(var i in scope.files){
        formData.append("uploadedFile", scope.files[i]);
    }

    // create xml http request object
    var httpRequest = new XMLHttpRequest();
    httpRequest.upload.addEventListener("progress", uploadProgress, false);
    httpRequest.addEventListener("load", uploadComplete, false);
    httpRequest.addEventListener("error", uploadFailed, false);
    httpRequest.addEventListener("abort", uploadCanceled, false);
    httpRequest.open("POST", "/Customer/UploadDocuments");

    // make progress bar visible
    scope.progressVisible = true;

    // send the request to the server with the form data
    httpRequest.send(formData);
}

// Private functions
function uploadProgress(event) {
    scope.$apply(function () {
        if (event.lengthComputable) {
            scope.progressValue = Math.round(event.loaded * 100 / event.total);
        }
        else {
            scope.progressValue = "Kan progressie niet berekenen";
        }
    });
}

function uploadComplete(event) {
    scope.hideForm(false);
}

function uploadFailed(event) {
    alert("Het uploaden van de documenten is mislukt.");
}

function uploadCanceled(event) {
    scope.$apply(function () {
        scope.progressVisible = false;
    });
}

MVC:

public void UploadDocuments(HttpPostedFileBase file)
{

}

这是我的请求标头的样子:

here is how my request headers look like:

Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8,nl;q=0.6
Connection:keep-alive
Content-Length:380863
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryc67wmYYq1T5VAMlT
Cookie:ASP.NET_SessionId=rgwgky0zymvb2ppg3jozrn2s; __ngDebug=false; .ASPXAUTH=A54883879090E307D871F8293C805B3B50D1DDFAD1CE5B05D7284426D895370CBBD75D25B7012D384A69CAB265783BDA8F05B1BA02E0121814F45B39E15520EC35408F19DF3345B5DB7F5502886D8696
Host:localhost:15982
Origin:http://localhost:15982
Referer:http://localhost:15982/
User-Agent:Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36

这里是有效载荷:

------WebKitFormBoundaryc67wmYYq1T5VAMlT
Content-Disposition: form-data; name="uploadedFile"; filename="deukjes_deur_2.jpg"
Content-Type: image/jpeg

要使它正常工作,我该怎么做?

What do I have to do to get this working?

推荐答案

这是因为您已将表单数据命名为 uploadedFile ,但是您的操作采用了名为 file .更改参数名称,如下所示:

That's because you've given the form data the name of uploadedFile, yet your action takes a parameter named file. Change the parameter name, like so:

public void UploadDocuments(HttpPostedFileBase uploadedFile)
{
}

这篇关于使用Angular上传文件时,HttpPostedFileBase为null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆