欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

javaweb文件上传源码

程序员文章站 2022-05-08 17:05:59
...
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=UTF-8");
		//上传
			try {
				//判断前台的form是否又mutipart属性
				boolean isMutipart=ServletFileUpload.isMultipartContent(request);
				if(isMutipart) {
					FileItemFactory factory=new DiskFileItemFactory();
					ServletFileUpload upload=new ServletFileUpload(factory);
					
					//设置缓冲文件的大小
					//factory.setsizeThreshold()
					//设置临时文件的目录
					//factory.setRepository(new File("...."))
					//控制上传文件的大小
					upload.setSizeMax(20480);
					
					
					
					//通过parseRequest解析form中所有请求字段,并保存到items集合中
					List<FileItem> items=upload.parseRequest(request);
					
					Iterator<FileItem> iter=items.iterator();
					while(iter.hasNext()) {
						FileItem item=iter.next();
						String itemName=item.getFieldName();
						int sno=-1;
						String sname=null;
						//判断前端字段是普通from表单字段还是文件字段、
						if(item.isFormField()) {
							if(itemName.equals("sno")) {
								//根据name字段属性判断item是sno,sname 还是其他
								sno=Integer.parseInt(item.getString("utf-8"));
							}else if(itemName.equals("sname")) {
								sname=item.getString("utf-8");
							}else {
								System.out.println("其他字段......");
							}
						}else {//spicture
							//文件上传处理
							//getfieldname 拿的是普通表单的字段
							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 jpg jpg");
								return;
							}
							
							//获取文件内容上传
							//定义文件路径   一般是服务器路径
							String path=request.getSession().getServletContext().getRealPath("upload");
							File file=new File(path,fileName);
							
							item.write(file);
							System.out.println(fileName+"上传成功");
							return;
						}
						
					}
					
				}
				
				
			}catch(FileUploadBase.SizeLimitExceededException e) {
				System.out.println("上传文件大小超过限制!最大不能超过20kb");
			}catch (FileUploadException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}