有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Servlet通过Post上传文件

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

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

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

任何正确方向的示例代码或链接都将受到极大的赞赏


共 (3) 个答案

  1. # 1 楼答案

    Commons FileUpload包使您可以轻松地向servlet和web应用程序添加健壮、高性能的文件上载功能

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

    this 链接可以帮助你更多

    既然你说-

    "I also need to be able to send a string (a file ID) along with the file"

    您必须解析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
    }
    

    希望这对你有帮助

  2. # 3 楼答案

    找到了关于如何使用HttpClient发送多部分数据的tutorial。看一看