2013-03-20 69 views
0

我正在使用HTTP请求将数据从一台服务器发送到另一台服务器。一切工作都很好,但我不知道如何发送文件(从一台服务器上传到另一台服务器)。Servlet通过邮件上载文件

我已经看了一些例子,但我也需要能够发送一个字符串(文件ID)与文件一起。

该请求是从该类的POST方法中的Java类发送的。是这样的:客户端发送带有ID的文件的上传请求到存储服务器。该存储服务器然后将该文件上传到另一个存储服务器...因此,从该服务器的POST方法发送从第一个服务器到另一个服务器的POST请求。

任何示例代码或链接正确的方向非常感谢。

+0

看看http://stackoverflow.com/questions/2422468/how-to-upload-files-to-server-using- jsp-servlet – Grim 2013-03-20 19:11:39

+0

这是通过网页中的表单完成的。我没有任何形式或类似的东西。 – 2013-03-20 19:15:56

+0

你需要客户端,服务器端还是两者? – Moesio 2013-03-20 19:22:20

回答

0

发现此tutorial您如何使用HttpClient发送多部分数据。看一看

0

The Commons FileUpload包使您可以轻松地为servlet和Web应用程序添加强大的高性能文件上载功能。

FileUpload解析符合RFC 1867“基于表单的HTML文件上传”的HTTP请求。也就是说,如果HTTP请求是使用POST方法提交的,并且内容类型为“multipart/form-data”,则FileUpload可以解析该请求,并以调用方容易使用的方式提供结果here

请参阅this 链接可以帮助您更多。

既然你说 -

“我也需要能够与 文件一起发送一个字符串(文件ID)”

你将不得不解析HTTP请求并检查FileItem是否是一个表单字段(字符串/文本 - 在您的案例中的文件ID) 并相应地处理它。

这里是多内容的请求的代码示例 -

boolean isMultipart = ServletFileUpload.isMultipartContent(request); 
     FileItemFactory factory = new DiskFileItemFactory(); 
     FileItem item=null; 
     ServletFileUpload servletFileUpload = new ServletFileUpload(factory); 
     servletFileUpload.setSizeMax(-1); 

     List items =null; 
     if (isMultipart) { 
      try 
      { 
       items = servletFileUpload.parseRequest(request); 
       Iterator iter = items.iterator(); 
       while (iter.hasNext()) { 
        item = (FileItem) iter.next();     
        if (item.isFormField()) 
        { 
//get your file Id from element to match with item.getFieldName() and do whatever you want 
} 
else if (!item.isFormField()){ 
//save your file here 
} 

希望帮助你。

+0

从http://commons.apache.org/proper/commons-fileupload// – NickJ 2013-03-21 11:14:47

+0

复制并粘贴@NickJ - 我已经在我的答案(commons-fileupload的链接)中提到过,它实际上是在那里描述的;-)其余部分我试图自己解释,我真的希望这对他有帮助。 – Mohsin 2013-03-21 13:19:37

+0

嗨!回复晚了,请原谅。我会研究你描述的方法。起初看起来似乎是我想要的。我会跟上你:) – 2013-03-24 09:27:40