javascript - 使用 Angular 和 Django 发送文件

标签 javascript angularjs django rest post

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

这是 Controller :

$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 列处的数据意外结束。我该怎么办?

最佳答案

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

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

关于javascript - 使用 Angular 和 Django 发送文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36915681/

相关文章:

javascript - 在 Filestack v3 中不获取 JSON 的值

javascript - 远程自动完成的错误处理不起作用

javascript - “未知提供商”尝试在 MeanJS v0.4.1 应用程序中包含 Angular-Websocket

javascript - 使用开发人员工具调试主干应用程序

angularjs - 视频自动播放错误

python - Django 翻译不起作用

django - 如何在 DRF 中使用相同名称的 read_only 和 write_only 不同的序列化程序?

javascript - 如何将一个传单标记添加到多个图层组?

javascript - 如何指定bower-install的目标目录?

python - Crispy 表单中的水平 View 和提交按钮不起作用