javascript – 如何使用Angular将JSON和文件发布到Web服务?

如何使用AngularJS发送POST请求? JSON部分是必需的,但文件不是.我已经尝试过基于其他博客文章,但它不起作用.我收到错误请求400错误.

将添加200点正确答案

var test = {
  description:"Test",status: "REJECTED"
};

var fd = new FormData();
fd.append('data',angular.toJson(test));

return $http.post('/servers',fd,{
  transformRequest: angular.identity,headers: {
    'Content-Type': undefined
  }
});

解决方法

我用一个简单的Spring后端测试了你的代码,它运行正常:
@Controller
public class FileController {

  @ResponseBody
  @RequestMapping(value = "/data/fileupload",method = RequestMethod.POST)
  public String postFile(@RequestParam(value="file",required=false) MultipartFile file,@RequestParam(value="data") Object data) throws Exception {
    System.out.println("data = " + data);

    return "OK!";
  }
}

我使用了角度v1.1.5的客户端代码:

var test = {
  description:"Test",angular.toJson(test));

//remove comment to append a file to the request
//var oBlob = new Blob(['test'],{ type: "text/plain"});
//fd.append("file",oBlob,'test.txt');

return $http.post('/data/fileupload',headers: {
    'Content-Type': undefined
  }
});

该请求如下所示(从Chrome控制台网络标签中复制):

Request URL:http://localhost:8080/data/fileupload
Request Method:POST
Status Code:200 OK

Request Headers
POST /data/fileupload HTTP/1.1
Host: localhost:8080
...
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryEGiRWBFzWY6xwelb
Referer: http://localhost:8080/
...
Request Payload
------WebKitFormBoundaryEGiRWBFzWY6xwelb
Content-Disposition: form-data; name="data"

{"description":"Test","status":"REJECTED"}
------WebKitFormBoundaryEGiRWBFzWY6xwelb--

响应200 OK,控制台输出预期的:{“description”:“Test”,“status”:“REJECTED”}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


kindeditor4.x代码高亮功能默认使用的是prettify插件,prettify是Google提供的一款源代码语法高亮着色器,它提供一种简单的形式来着色HTML页面上的程序代码,实现方式如下: 首先在编辑器里面插入javascript代码: 确定后会在编辑器插入这样的代码: <pre
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换为SyntaxHighlighter代码高亮插件 上一篇“让kindeditor显示高亮代码”中已经
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)
原生JS实现别踩白块小游戏(一)