57 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
		
		
			
		
	
	
			57 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| 
								 | 
							
								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;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |