Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angularjs:文件上载不工作_Javascript_Angularjs_Asp.net Web Api - Fatal编程技术网

Javascript Angularjs:文件上载不工作

Javascript Angularjs:文件上载不工作,javascript,angularjs,asp.net-web-api,Javascript,Angularjs,Asp.net Web Api,我正试图上传一个基于以下链接中教程的文件, 但问题是formdata请求中不存在该文件,并且http.POST请求在调用时失败。我在这方面花了很多时间,我无法发现任何错误。有人能帮我解决这个问题吗 // NOW UPLOAD THE FILES. $scope.uploadFiles = function (id) { formdata.append('pid', id); debugger; var request = { method: 'POST

我正试图上传一个基于以下链接中教程的文件,

但问题是formdata请求中不存在该文件,并且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()方法比$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>

可能是次要的,但代码中有一个额外的大括号。也许删除它,看看代码是否仍然在正确的函数/方法上下文中运行。这就是控制器的结束括号。没关系:)你能在调用这些函数的地方发布代码吗?现在添加。请检查可能是次要的,但代码中有一个额外的大括号。也许删除它,看看代码是否仍然在正确的函数/方法上下文中运行。这就是控制器的结束括号。没关系:)你能在调用这些函数的地方发布代码吗?现在添加。请查收
var httpRequest = HttpContext.Current.Request;
        var FileObject = httpRequest.Params[0];
        var FObject = httpRequest.Form[0];
        id = Convert.ToInt32(httpRequest.Params[1]);