【问题标题】:Unable to send the file in $http post method in angularJS无法在 angularJS 的 $http post 方法中发送文件
【发布时间】:2016-09-28 15:45:42
【问题描述】:

在我的项目中,我试图在成功上传文件后将文件发送到服务器。这是我的代码,请检查。

 fdata = new FormData();
 fdata.append("file", file);

 $http.post('/UserQuestionnaire/AddQuestionnaire?Name=' + questionDetails.questionName + '&Description=' + questionDetails.questionDescription, fdata,
        {
                                    headers: {
                                     'Content-Type': false,
                                     'SessionID':$rootScope.token
                                    }
                                }).then(function(success){
                                    console.log("success question uploaded" + success);
                                },function(error){
                                  console.log("error"+error);
                                });

所有数据都与查询字符串值一起出现,但文件没有到达服务器。

【问题讨论】:

  • 尝试在服务器端获取 $_FILES。
  • 您是否遇到任何错误?
  • 文件不会只发送到服务器。这段代码正确吗?

标签: angularjs xmlhttprequest form-data


【解决方案1】:

IMO,在查询字符串中发送数据不是一个好习惯。

对于文件,你可以这样做。

var fd = new FormData();
var imgBlob = dataURItoBlob($scope.uploadme);
fd.append('file', imgBlob);


$http({
    url: '/UserQuestionnaire/AddQuestionnaire',
    method: 'POST',
    data: params

});

将标题用作,

headers: {
  'Content-Type': 'multipart/form-data'
},

【讨论】:

  • 它是这样设计的api。是否有任何额外的东西需要写在标题或任何地方?
  • 我正在尝试发送扩展名为“.opgs”的文件。那样的话我怎么寄?
  • 您能否提供您的 jsfiddle 或您在控制台中遇到的任何错误?
  • 一切都好吗?
【解决方案2】:

我以自己的方式得到了答案。以下是更新后的代码。

{
 transformRequest: angular.identity,
 headers: {
           'Content-Type': undefined,
           'SessionID':$rootScope.token
         }
}

这是参考链接。看看这个Multipart/form-data File Upload with AngularJS

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    相关资源
    最近更新 更多