Java web 网页表单的文件上传

本文详细介绍使用JSP和Servlet进行文件上传的过程,包括配置multipart/form-data,利用commons-fileupload和commons-io库解析请求,以及如何设置临时目录来处理上传的文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

javax.servelet.context.tempdir 

 jsp页面必须有<form action="Fileshangchuan" method="post" enctype="multipart/form-data">

导入commons-fileupload-1.2.1.jar,commons-io-1.4.jar包

  • 每一个servlet上下文都需要一个临时存储目录。Servlet容器必须为每一个servlet上下文提供一个私有的临时目录,并且使它可以通过javax.servlet.context.tempdir上下文属性可用。这些属性关联的对象必须是java.io.File类型。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//List<FileItem> items=
		ServletContext servletContext=null;
		servletContext=request.getSession().getServletContext();
		 boolean isMultipart=ServletFileUpload.isMultipartContent(request); //判单是否是上传,encType="multipart/form-data";
	        if(isMultipart) {
	            DiskFileItemFactory factory = new DiskFileItemFactory();
	            String str="javax.servelet.context.tempdir";
	            File repository=(File) servletContext.getAttribute(str);
	            factory.setRepository(repository);   //设置当超出临界时,存放的零时目录
	            ServletFileUpload upload=new ServletFileUpload(factory);  //创建一个上传工具
	            try {
					List<FileItem> items = upload.parseRequest(request);  //读取表单所有内容
					String second=new SimpleDateFormat("yyyyMMddhhmmss").format(new Date());
		            String fileName=second+".jpg";  //避免重名
		            for(FileItem item:items) {   //遍历,路径是发布以后的路径.me_tcat7   
		            	File savePath=new File("D:\\Myeclipse\\新建文件夹\\.metadata\\.me_tcat7\\webapps\\sessiontext\\img");
		                if(!savePath.exists()) {  //判断路径是否存在
		                    savePath.mkdirs();
		                }
		                if(item.isFormField()){   //判断是否为普通字段
		                	String value=item.getString("utf-8");   //设置编码格式
		                	System.out.println(value);
		                }
		                else {
							File uploadFile=new File(savePath+File.separator+fileName);  //给照片确定路径  分隔符
		               
		                    try {
								item.write(uploadFile);    //写入
								System.out.println("保存成功");
							} catch (Exception e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
						}
		                
		                    
		            }
				} catch (FileUploadException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
	  
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值