使用XMLHttpRequest将文件从Javascript前端上载到JAVA后端
作为带有JAVA后端应用程序的Javascript(SAPUI5)的一部分,我实现了一个“联系我们”表单,我希望用户能够将文件上传到此表单并发送它 然后,我想将这些文件与表单中发送的信息一起发送给管理员电子邮件。我面临的问题是,我得到了一份工作 415来自JAVA API的错误响应,尽管我似乎正在设置发送的正确内容类型 我现时的守则如下: Javascript:使用XMLHttpRequest将文件从Javascript前端上载到JAVA后端,javascript,java,post,xmlhttprequest,Javascript,Java,Post,Xmlhttprequest,作为带有JAVA后端应用程序的Javascript(SAPUI5)的一部分,我实现了一个“联系我们”表单,我希望用户能够将文件上传到此表单并发送它 然后,我想将这些文件与表单中发送的信息一起发送给管理员电子邮件。我面临的问题是,我得到了一份工作 415来自JAVA API的错误响应,尽管我似乎正在设置发送的正确内容类型 我现时的守则如下: Javascript: sendContactRequest: function(){ var contactUsModel = th
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;
}
};
}
爪哇:
@POST
@路径(“/{name}/{email}/{subject}/{description}/{attachmentCount}”)
@使用(MediaType.MULTIPART\u FORM\u数据)
公共响应getNotificationByUser(@Context SecurityContext sc,
@PathParam(“名称”)字符串名称,
@PathParam(“电子邮件”)字符串电子邮件,
@PathParam(“主题”)字符串主题,
@PathParam(“描述”)字符串描述,
@PathParam(“attachmentCount”)整数attachmentCount,
HttpServletRequest请求,
HttpServletResponse(响应){
试一试{
列表附件=新的ArrayList();
如果(附件计数>0){
Part filePart=request.getPart(“文件”);
InputStream filecontent=filePart.getInputStream();
附件。添加(文件内容);
}
EmailUtils.sendContactUsEmail(姓名、电子邮件、主题、描述、附件);
Gson Gson=新的Gson();
字符串json=gson.toJson(“”);
返回Response.ok().entity(json.build();
}
捕获(例外e){
返回Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).build();
}
}
任何帮助都将不胜感激
@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();
}
}