使用Angular和Django发送文件

时间:2016-04-28 13:08:56

标签: javascript angularjs django rest post

我正在使用Angular + Django做一个简单的博客。当用户可以创建新帖子,写标题和正文时,我有一个页面。另外,最后,他可以添加一个文件。

这是控制器:

$scope.newPost = {};

$scope.addPost = function(){
  if ($scope.newPost){
    PostListSrv.addPost.add($scope.newPost, function(data) {
        if (data) {
          console.log('success');
        }
      }, function(error) {
        if (error) {
          console.log('error');
        }
      }
    );
  } else {

          console.log('Error');
  }
};

这是我呼叫服务器的服务:

   .....
  addPost: $resource('my_url', {
  }, {
    add: {
      method: 'POST',
      headers: { 'Content-Type': 'multipart/form-data' },
      params:{title:'title', text:'text', file: 'file'}
    }
  }), 
  ....

问题是,如果我尝试添加新帖子,我会收到400错误。特别是在“网络”(Firefox)的“响应”选项卡中,我有一条红线写道:SyntaxError:JSON.parse:JSON数据的第1行第1列的意外数据结束。我该怎么办?

2 个答案:

答案 0 :(得分:0)

在发送参数之前,请使用JSON.stringify()

.....
addPost: $resource('my_url', {
}, {
  add: {
    method: 'POST',
    headers: { 'Content-Type': 'multipart/form-data' },
    params: JSON.stringify({title:'title', text:'text', file: 'file'})
  }
}), 
....

答案 1 :(得分:0)

您可以使用$upload上传文件

$upload.upload({
    url: 'servicesUrl/',
    file: fileToBeUpload,
    data: {'title': title},
    method: 'POST',
    withCredentials: false,
    contentType:'application/json',
    dataType:'json'
});