如何解决使用 XMLHttpRequest 将文件从 Javascript 前端上传到 JAVA 后端
作为带有 JAVA 后端应用程序的 Javascript (SAPUI5) 的一部分,我实现了一个“联系我们”表单,我希望用户能够将文件上传到此表单并发送。
然后,我想将这些文件与表格中发送的信息一起发送到管理员电子邮件。我面临的问题是我得到了一个 来自我的 JAVA API 的 415 错误响应,尽管我似乎正在设置发送的正确内容类型。
我现在的代码如下: Javascript:
sendContactRequest: function(){
var contactUsModel = this.getView().getModel("contactFormModel");
var name = contactUsModel.getProperty("/name");
var email = contactUsModel.getProperty("/email");
var subject = contactUsModel.getProperty("/subject");
var description = contactUsModel.getProperty("/description");
var formData = new FormData();
formData.append("file",contactUsModel.getProperty("/attachments")[0]);
var url = formatter.getPrefixUrl("/Urisite/contactapi" + name + "/" + email + "/" + subject + "/" + description + "/1",this._oSitename);
var xhr = new XMLHttpRequest();
xhr.open('POST',url);
xhr.setRequestHeader("Content-Type","multipart/form-data");
xhr.setRequestHeader("x-csrf-token",this.csrftoken);
xhr.send(formData);
xhr.onreadystatechange = function(){
if(xhr.readyState === 4){
var i = 8;
}
};
}
Java:
@POST
@Path("/{name}/{email}/{subject}/{description}/{attachmentCount}")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response getNotificationByUser(@Context SecurityContext sc,@PathParam("name") String name,@PathParam("email") String email,@PathParam("subject") String subject,@PathParam("description") String description,@PathParam("attachmentCount") Integer attachmentCount,HttpServletRequest request,HttpServletResponse response) {
try {
List<InputStream> attachments = new ArrayList<>();
if(attachmentCount > 0) {
Part filePart = request.getPart("file");
InputStream filecontent = filePart.getInputStream();
attachments.add(filecontent);
}
EmailUtils.sendContactUsEmail(name,email,subject,description,attachments);
Gson gson = new Gson();
String json = gson.toJson("");
return Response.ok().entity(json).build();
}
catch(Exception e) {
return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).build();
}
}
任何帮助将不胜感激!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。