如何使用AngularJS $ http发送multipart / form-data
我正在开发一个使用不同服务rest的图形界面(用java编写)。 我必须打电话给这样的服务:
@PUT @Path("nomeServizio") public Response nomeServizio(final FormDataMultiPart multiPart) { ......}
来电服务:
service: function (data) { return $http({ url: PATH_REST_SERVICES + '/nomeServizio', headers: {"Content-Type": "multipart/form-data"}, data: data, method: "PUT" }); }
当我从Angularjs服务文件请求时,如果服务具有Content-Type = multipart / form-data,我得到:错误400(错误请求)
如果服务具有Content-Type =“application / x-www-form-urlencoded; charset = utf-8”或“application / json; charset = utf-8”,则会收到415(不支持的媒体类型)错误“申请/表格数据”。
我正在开发javascript和html5的前端,我没有找到任何可以帮助我的网络,因为在JavaScript中不存在FormDataMultiPart对象。
我试图格式化数据以多种方式发送,但它总是返回400或415。
我应该如何格式化数据以发送到其余的呼叫?
内容类型应该如何在标题中?
如何使用AngularJS $ http发送FormData
FormData接口提供了一种方法,可以轻松构造一组表示表单字段及其值的键/值对,然后可以使用XHR Send方法轻松发送。 如果编码类型设置为multipart/form-data
它使用与表单相同的格式。
var formData = new FormData(); formData.append('type', type); formData.append('description', description); formData.append('photo', photo); return $http({ url: PATH_REST_SERVICES + '/nomeServizio', headers: {"Content-Type": undefined }, data: formData, method: "PUT" });
将内容类型标头设置为undefined
非常重要。 通常, $ http服务将内容类型设置为application/json
。 当内容类型undefined
, XHR API将自动将内容类型设置为具有适当多部分边界的 multipart/form-data
。
在java代码中,您需要编写如下代码:
@POST @Path("/upload") @Consumes(MediaType.MULTIPART_FORM_DATA) public Response uploadFile( @FormDataParam("file") InputStream uploadedInputStream, @FormDataParam("file") FormDataContentDisposition fileDetail) {
您可以参考以下示例和链接: –
https://www.mkyong.com/webservices/jax-rs/file-upload-example-in-jersey/
- 如何在现有Java Web项目中添加AngularJS 2
- 如何在angularjs中发送多个FIles以及表单数据
- Access-Control-Allow-Origin是否足以防止XSRF攻击?
- 带有spring MVC的JasperReport:在客户端打印报告而不显示它
- 异步执行多个任务并在JavaScript函数中返回第一个成功的结果
- Spring MVC和Angularjs
- 将jhipster后端和前端分成两个项目?
- 通过Javascript缓存与在Server中设置HTTPResponse头之间有什么区别?
- 运行grunt和tomcat服务器的Web App(Spring,Angular,Grunt,Maven,Tomcat)