JSP文件上传在servlet收集参数的详解

jsp页面

<span style="font-size:14px;"><script type="text/javascript">
			
			function addImge(){
				var imgeName=document.getElementsByName("imgeName")[0].value;
				var mime = imgeName.toLowerCase().substr(imgeName.lastIndexOf(".")); 
				if(mime==".png" || mime==".jpeg" || mime==".jpg") { 
					var itemForm = document.getElementById("itemForm");					
					itemForm.action = "./itemsServlet?commond=addImge&itemsNo="+<%=item.getItemNo()%>;
					itemForm.method = "POST";
					itemForm.submit();
				}else{
					alert("请选择PNG或JPEG格式的图片上传 "); 
					return false;
				}			
			}
</script></span>
<span style="font-size:14px; white-space: pre;">	</span><span style="font-size:14px;"><form name="itemForm" target="_self" id="itemForm" </span><span style="font-size:24px;color:#ff0000;">enctype="multipart/form-data"</span><span style="font-size:14px;">></span>
<span style="font-size:14px;">
	<tr>
		<td width="22%" height="29">
			<div align="right">
				<font color="#FF0000">*</font>选择图片: 
			</div>
		</td>
		<td width="78%">
			<input name="imgeName"   type="file" class="text1" size="40" maxlength="40" value=""/>
		</td>
	</tr>
</span>


fileServlet.java

<span style="font-size:14px;">private void FileUploadUtil(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{
		PrintWriter out = resp.getWriter();
		//**********************************************上传文件开始************************************************
		//设置request编码,主要是为了处理普通输入框中的中文问题
		req.setCharacterEncoding("gb18030");
		//这里对request进行封装,RequestContext提供了对request多个访问方法
		RequestContext requestContext = new ServletRequestContext(req);
		//判断表单是否是Multipart类型的。这里可以直接对request进行判断,不过已经以前的用法了
		if(FileUpload.isMultipartContent(requestContext)){
			DiskFileItemFactory factory = new DiskFileItemFactory();
			//设置文件的缓存路径
			//factory.setRepository(new File("F:/javaEE/apache-tomcat-6.0.36/work/imgepy/"));
			factory.setRepository(new File(getServletContext().getRealPath("upload")+"/imgespy/"));
			ServletFileUpload upload = new ServletFileUpload(factory);
			//设置上传文件大小的上限,-1表示无上限 
			upload.setSizeMax(100*1024*1024);
			List items = new ArrayList();
			try {
				//上传文件,并解析出所有的表单字段,包括普通字段和文件字段
				items = upload.parseRequest(req);
			} catch (FileUploadException e1) {
				out.println("文件上传发生错误" + e1.getMessage());
			}
			//下面对每个字段进行处理,分普通字段和文件字段
			Iterator it = items.iterator();
			while(it.hasNext()){
				FileItem fileItem = (FileItem) it.next();
				//如果是普通字段false为文件信息(主要是过滤表单里的其他信息  true 为非文件表单其他信息)
				if(!fileItem.isFormField()){ 
					//判断文件名称是否为Null,或“ ” 文件大小是否为 0
					if(fileItem.getName()!=null && fileItem.getSize()!=0){
						
						File fullFile = new File(fileItem.getName());
						String myfile=null;
						//生成当前系统时间为文件的名字
						String name=new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
						//获取文件后缀
						String pastfix=  fullFile.getName().substring(fullFile.getName().lastIndexOf(".")+1);
						//重命名文件  时间日期为文件名称 如: yyyMMddHHmmss.png
						String imgesName=name+"."+pastfix;
						//创建新文件    物目录 + 文件名
						//File newFile = new File("F:/javaEE/apache-tomcat-6.0.36/work/imges/" +imgesName);
					File newFile = new File(getServletContext().getRealPath("upload")+"\\imges\\"+ imgesName);
						
						//String imgesName2=getServletContext().getRealPath("upload")+"\\imges\\";
						//System.out.println("**********filepath************"+imgesName2);
						
						//收集对象的参数 
						String itemsNo=req.getParameter("itemsNo");
						ItemsImge itemsImge=new ItemsImge();
						itemsImge.setItemNo(itemsNo);
						itemsImge.setImgeName(imgesName);
						
						try {
							//写入文件
							fileItem.write(newFile);
						} catch (Exception e) {
							e.printStackTrace();
						}
						try {
							//添加文件名字信息到数据库
					ItemsManager itemsManager =(ItemsManager)getServletContext().getAttribute("itemsManager");	
							itemsManager.addItemsImge(itemsImge);
						} catch (AppException e1) {
							e1.printStackTrace();
						}
					}
				}
			}
		}
		//**********************************************上传文件结束************************************************
	}</span>
上传文件需要用到的jar包: commons-fileupload-1.1.1.jar 建议也把  commons-io-1.2.jar考入以后有可能用的着。

注意:在上传文件的表单 添加   enctype="multipart/form-data" 属性 否则在servlet无法识别表单

******************注解是自己个写的,由于刚学两天自己网上查阅自学的,有什么不对的地方,请谅解。详情可查询相应的API文档************************






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值