0

我正在开发一个使用 HTTP 请求将数据从一台服务器发送到另一台服务器的应用程序。一切都适用于字符串,但我不知道如何发送文件(文件从一台服务器上传到另一台服务器)。

我查看了一些示例,但我还需要能够随文件一起发送字符串(文件 ID)。

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

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

4

3 回答 3

0

这是我设法实施的解决方案,它有效:http ://www.dreamincode.net/forums/topic/316513-upload-file-from-one-servlet-to-another/

于 2013-04-03T18:26:08.640 回答
0

找到了如何使用 HttpClient 发送多部分数据的教程。看一看

于 2013-03-20T19:34:31.613 回答
0

CommonsFileUpload包可以很容易地为您的 servlet 和 Web 应用程序添加强大的、高性能的文件上传功能。

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

查看 链接可以为您提供更多帮助。

既然你说——

“我还需要能够随文件一起发送字符串(文件 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
}

希望对您有所帮助。

于 2013-03-20T19:36:01.633 回答