【问题标题】:Ajax request to send file from jsp to servlet将文件从 jsp 发送到 servlet 的 Ajax 请求
【发布时间】:2013-04-28 14:45:58
【问题描述】:

以下是使用struts框架完成的

jsp

<html:form action="/uploadDrawing" method="post" enctype="multipart/form-data">
<input type="file" name="attachfile" class="regi_textbox"/>
<input type="submit" name="button" class="update_but"  value="Upload File" />
</html:form>

表格

private FormFile attachfile;

public FormFile getAttachfile() {
return attachfile;
}  
public void setAttachfile(FormFile attachfile) {
this.attachfile = attachfile;
} 

动作类

FormFile attachfile = uploadDrawingForm.getAttachfile();

这对我来说很好,但我需要使用 ajax 请求(jsp-servlet)来执行此操作,以下是我尝试但没有成功的方法---

jsp

 <script>
 function dynamicUpload()
 {  
alert("function played");
var fd = new FormData($("attachfileform"));    
fd.append( 'file', input.files[0] );


alert(fd);
$.ajax({
    url: 'UploadDrawingServlet',
    data: fd,
    processData: false,
    contentType: false,
    type: 'POST',
    success: function(data){
      alert(data);

    }
});
}
 </script>

 <form enctype="multipart/form-data" method="post" action="" id="attachfileform" name="attachfileform" >
 <input type="file" name="attachfile" class="regi_textbox"/>
 <input type="button" class="update_but"  value="Upload File" onclick="dynamicUpload()"/>
  </form>

小服务程序

public class UploadDrawingServlet extends HttpServlet{

private static final long serialVersionUID = 1L;

public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String file = request.getParameter("data");

}   
}

对于我提供的 web.xml 中的映射

 <servlet>
    <servlet-name>UploadDrawingServlet</servlet-name>
    <servlet-class>UploadDrawingServlet</servlet-class>
</servlet>

 <servlet-mapping>
    <servlet-name>UploadDrawingServlet</servlet-name>
    <url-pattern>/UploadDrawingServlet</url-pattern>
</servlet-mapping>

在 servlet 类中,它的接收方式为---

public class UploadDrawingServlet extends HttpServlet{

private static final long serialVersionUID = 1L;

public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

System.out.println("Here in servlet class");
String file = request.getParameter("data");
}   
}

谁能告诉我如何使用 ajax 请求来实现以下功能。 或者如果这种类型的请求是不可能的。 谢谢////

【问题讨论】:

    标签: javascript ajax file servlets struts


    【解决方案1】:
    function dynamicUpload(){
      var formElement = $("[name='attachfileform']")[0];
      var fd = new FormData(formElement); 
      var fileInput = $("[name='attachfile']")[0];
      fd.append('file', fileInput.files[0] );
    
      console.log(fd);
    
      $.ajax({
        url: 'UploadDrawingServlet',
        data: fd,
        processData: false,
        contentType: false,
        type: 'POST',
        success: function(data){
          console.log(data);
        }
     });
    

    }

    http://jsfiddle.net/ajk7J/

    【讨论】:

    • 什么特别不起作用? FormData 对象不正确,或者 ajax post 请求没有发送到服务器,或者您收到不正确的响应?
    • 确保 $.ajax 中的 url 正确。我怀疑 UploadDrawingServlet 是正确的。
    • 它执行函数 onclick 事件但不处理我正在接收文件以进行进一步处理的 servlet 类。我在 web.xml 中提供了一个映射,并且在 servlet 中只有一个接收函数。我将使用 .xml 和 servlet 更新我的问题。
    • 已经更新了我的问题。它也没有在控制台产生任何输出。
    • 好吧,不幸的是,我不熟悉 java 和 servlet,所以我无法在服务器端为您提供帮助,但在我看来,您已经输入了 wrog url。例如,如果您使用过 ASP.net MVC,则在使用 Web 服务的情况下,url 应该看起来像“UploadDrawingServlet/service”或“UploadDrawingServlet.asmx/service”。我希望它应该与您的情况类似。
    猜你喜欢
    • 1970-01-01
    • 2012-11-14
    • 2014-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多