微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 XMLHttpRequest 将文件从 Javascript 前端上传到 JAVA 后端

如何解决使用 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 举报,一经查实,本站将立刻删除。