Loading

文件上传


<body>
	<form action="/UploadServlet" method="post" enctype="multipart/form-data">
		用户名:<input name="uname"/>
				<br/>
		头像:    <input type="file" name="upicture"/>
				<br/>
		      <input type="submit" value="提交"/>
	</form>
	
	<a href="DownloadServlet?filename=1.png">文件下载</a>
</body>






@WebServlet("/UploadServlet")
public class UploadServlet extends HttpServlet {

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		//获取文件上传的路径--服务器路径
		String realPath = request.getServletContext().getRealPath("/image/user");
		 File f = new File(realPath);
		 if(!f.exists()) {
			 f.mkdirs();
		 }
		
		//设置编码
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html; charset=UTF-8");
		response.setCharacterEncoding("utf-8");
		
		try {
		 //判断前台的form是否是要上传文件
		boolean isMultipart = ServletFileUpload.isMultipartContent(request);
		if (isMultipart) {
			DiskFileItemFactory factory = new DiskFileItemFactory();
			
			ServletFileUpload upload = new ServletFileUpload(factory);
			
			
			upload.setSizeMax(1024*200);//200kB
			
			//form中的所有请求字段将保存到 items集合中 包括用户名和头像,不能再用request.getParameter方法
			List<FileItem> items = upload.parseRequest(request);
			//遍历集合,分别处理简单数据和文件数据
			Iterator<FileItem> iter = items.iterator();
			while (iter.hasNext()) {
				FileItem item = iter.next();
				//String itemName = item.getFieldName();
				if (item.isFormField()) {//普通字段--用户名
					String name = item.getString("UTF-8");
				}else {//文件
					String fileName = item.getName();
					//判断是否为图片
					String ext = fileName.substring( fileName.indexOf(".")+1 ) ;
					if(!(ext.equals("png") || ext.equals("gif") ||ext.equals("jpg"))) {
						System.out.println("图片类型有误!格式只能是 png gif  jpg");
						return ;//终止
					}
					//处理图片
					 String  newFileName = UUID.randomUUID().toString() + fileName.substring(fileName.lastIndexOf("."), fileName.length());
					 
					 String path=realPath+File.separator+newFileName;
					 
					 File file = new File(path);
					 
					 item.write(file);// 上传
					 System.out.println(fileName + "上传成功!");
					 return;
				}
			}
		}
			
		} catch (FileUploadException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}
posted @ 2020-11-22 18:54  Songcubi  阅读(104)  评论(0)    收藏  举报