用java编写个文件上传
以下是一个简单的Java文件上传示例,使用Servlet API和Apache Commons FileUpload库。
- 创建一个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>
- 创建一个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;
}
}
}
- 在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>
- 部署并启动应用程序,访问HTML表单,选择要上传的文件并提交表单。文件将被保存到Java临时目录中,并在上传成功时向客户端发送响应。
原文地址: https://www.cveoy.top/t/topic/ZWk 著作权归作者所有。请勿转载和采集!