以下是一个简单的Java文件上传示例,使用Servlet API和Apache Commons FileUpload库。

  1. 创建一个HTML表单,允许用户选择要上传的文件:
<!DOCTYPE html>
<html>
<head>
	<title>File Upload Example</title>
</head>
<body>
	<form method="post" action="FileUploadServlet" enctype="multipart/form-data">
		Select file to upload: <input type="file" name="file" /><br />
		<input type="submit" value="Upload" />
	</form>
</body>
</html>
  1. 创建一个Servlet,处理文件上传请求:
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

@WebServlet("/FileUploadServlet")
public class FileUploadServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// Check that we have a file upload request
		boolean isMultipart = ServletFileUpload.isMultipartContent(request);
		if (!isMultipart) {
			response.sendError(HttpServletResponse.SC_BAD_REQUEST, "No file uploaded");
			return;
		}
		
		// Create a factory for disk-based file items
		DiskFileItemFactory factory = new DiskFileItemFactory();
		
		// Set the maximum size threshold beyond which files are written directly to disk
		factory.setSizeThreshold(1024 * 1024 * 10); // 10 MB
		
		// Set the temporary directory to store uploaded files
		File tempDir = new File(System.getProperty("java.io.tmpdir"));
		factory.setRepository(tempDir);
		
		// Create a new file upload handler
		ServletFileUpload upload = new ServletFileUpload(factory);
		
		// Set the maximum file size to be uploaded
		upload.setFileSizeMax(1024 * 1024 * 100); // 100 MB
		
		try {
			// Parse the request to get file items
			List<FileItem> items = upload.parseRequest(request);
			
			// Process the uploaded file
			for (FileItem item : items) {
				if (!item.isFormField()) {
					// Get the uploaded file's name and content
					String fileName = item.getName();
					byte[] fileContent = item.get();
					
					// Save the file to disk
					File file = new File(tempDir, fileName);
					item.write(file);
					
					// Send a response to the client
					response.setContentType("text/html");
					PrintWriter out = response.getWriter();
					out.println("<html>");
					out.println("<head><title>File Upload Example</title></head>");
					out.println("<body>");
					out.println("<h1>File " + fileName + " uploaded successfully!</h1>");
					out.println("</body>");
					out.println("</html>");
				}
			}
		} catch (Exception e) {
			response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Failed to upload file: " + e.getMessage());
			return;
		}
	}
}
  1. 在web.xml文件中添加Servlet映射:
<web-app>
	<servlet>
		<servlet-name>FileUploadServlet</servlet-name>
		<servlet-class>com.example.FileUploadServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>FileUploadServlet</servlet-name>
		<url-pattern>/FileUploadServlet</url-pattern>
	</servlet-mapping>
</web-app>
  1. 部署并启动应用程序,访问HTML表单,选择要上传的文件并提交表单。文件将被保存到Java临时目录中,并在上传成功时向客户端发送响应。
用java编写个文件上传

原文地址: https://www.cveoy.top/t/topic/ZWk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录