Angularjs:FileUpload无法正常工作

时间:2017-05-16 05:32:51

标签: javascript angularjs asp.net-web-api

我正在尝试根据以下链接中的教程上传文件, http://www.encodedna.com/angularjs/tutorial/angularjs-file-upload-using-http-post-formdata-webapi.htm

但问题是formdata请求中没有File,http.POST请求在调用时失败。我花了很多时间在这上面,我无法发现任何错误。有人可以帮我解决这个问题。

// NOW UPLOAD THE FILES.
$scope.uploadFiles = function (id) {

    formdata.append('pid', id);
    debugger;
    var request = {
        method: 'POST',
        url: '/api/Project/PostProjectFiles',
        data: formdata,
        headers: {
            'Content-Type': undefined
        }
    };

    console.log(request);

    // SEND THE FILES.
    $http(request)
        .then(function (d) {
            alert(JSON.stringify(d));
        })
        .catch(function (d) {
            alert(JSON.stringify(d));
            console.log(d);
        });
}


var formdata = new FormData();

$scope.getTheFiles = function ($files) {
    //debugger;
    angular.forEach($files, function (value, key) {
        formdata.append(key, value);
    });
    console.log($files);
};

myApp.directive('ngFiles', ['$parse', function ($parse) {

    function fn_link(scope, element, attrs) {
        var onChange = $parse(attrs.ngFiles);
        element.on('change', function (event) {
            onChange(scope, {
                $files: event.target.files
            });
        });
    };

    return {
        link: fn_link
    }
}]);

我怀疑上面的getthefiles()方法更多bcos $ files包含文件,但formdata不包含文件。

HTML代码,

<div class="col-sm-8 panelpadding">
                        <div>
                            <input type="file" id="file1" name="file1" ng-model="project.file1" ng-files="getTheFiles($files)" class="col-sm-4" />
                        </div>
                        <div class="col-sm-12 text-center">
                            <button type="button" ng-click="uploadFiles(41)">Upload Documents</button>
                        </div>
                    </div>

我也尝试了所有这些方法来捕捉归档数据,但它没有成功。每次我在httprequest中获得[object object]

var httpRequest = HttpContext.Current.Request;
        var FileObject = httpRequest.Params[0];
        var FObject = httpRequest.Form[0];
        id = Convert.ToInt32(httpRequest.Params[1]);

0 个答案:

没有答案