java_web/java/com/demo/FileUploadServlet.java

57 lines
2.0 KiB
Java
Raw Permalink Normal View History

2024-11-25 19:06:50 +08:00
package com.demo;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
@WebServlet(name = "FileUploadServlet", urlPatterns = {"/fileUpload.do"})
@MultipartConfig(location = "D:\\", fileSizeThreshold = 1024)
public class FileUploadServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 设置请求和响应的字符编码为UTF-8
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
// 返回Web应用程序文档根目录
String path = this.getServletContext().getRealPath("/");
String mnumber = request.getParameter("mnumber");
Part p = request.getPart("fileName");
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<font color = '#0000ff'>");
if (p.getSize() > 1024 * 1024) { // 上传的文件不能超过1MB大小
p.delete();
out.println("文件太大,不能上传!");
} else {
path = path + "\\student\\" + mnumber;
File f = new File(path);
if (!f.exists()) { // 若目录不存在,则创建目录
f.mkdirs();
}
// 得到文件名
String h = p.getHeader("content-disposition");
String fname = getFileName(h);
p.write(path + "\\" + fname);
out.println("文件上传成功!");
}
out.println("</body></html>");
}
private String getFileName(String contentDisposition) {
String[] parts = contentDisposition.split(";");
for (String part : parts) {
if (part.trim().startsWith("filename")) {
return part.substring(part.indexOf('=') + 1).trim().replace("\"", "");
}
}
return null;
}
}