使用servlet在特定位置的服务器上上传文件?

时间:2012-10-04 07:44:53

标签: java servlets

大家好我手头有一个严重的问题,我在客户端机器上有一个zip文件,我需要在服务器机器上的特定位置上传该zip文件,客户机自动创建一个快照的zip文件并且应该在特定位置的服务器上以编程方式上传该zip文件,并且之间没有任何用户交互,任何人都可以建议如何执行此任务。我需要为此编写一个java代码。我已经尝试过多个链接来演示文件上传,但没有一个能够满足我的目的。

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以在客户端中使用Apache HttpComponents,您可以找到许多示例,以使客户端能够将文件作为多部分帖子http请求上传。

然后,您必须创建一个能够以流形式接收文件的简单servlet。 为了帮助您实现servlet,您可以使用另一个库:Apache Commons FileUpload

答案 1 :(得分:1)

使用Servlet 3.0 API接收并保存多部分帖子中的文件,而不使用任何外部lib。 :

首先,您必须通过“发布”上传文件并启用多部分,因为上传大文件更方便。你必须命名'part''文件'。每个部分都有标题。代码读取标头以使用原始文件名或根据上载时间设置一个。代码编写一个简单的文本来确认上传请求。

import java.io.IOException;
import java.io.PrintWriter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

@MultipartConfig
public class UploadServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

        Part part = request.getPart("file");

        Matcher m = Pattern.compile("filename=\"(.*)\"", Pattern.CASE_INSENSITIVE).matcher(
                part.getHeader("content-disposition"));
        String filename;
        if (m.find()) {
            filename = m.group(1);
        } else {
            filename = "upload" + System.currentTimeMillis();
        }
        part.write("C:/path/" + filename);
        out.println("File '" + filename + "' uploaded.");
    }
}