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