Skip to content
/ FUD Public

使用cmomons-fileupload和commons-io包,基于jsp和servlet完成简易上传下载。

Notifications You must be signed in to change notification settings

lsc95/FUD

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

使用commons-fileupload&commons-io实现简单的文件上传和下载功能

上传功能(核心代码)

// 创建FileItemFactory对象
FileItemFactory factory = new DiskFileItemFactory();
// 创建ServletFileUpload对象
ServletFileUpload upload = new ServletFileUpload(factory);
//使用ServletFileUpload解析request,返回的是数据
List<FileItem> list=upload.parseRequest(req);
//根据api方法判断上传表单项和普通表单项
for (FileItem fileItem : list) {
	// 获取上传表单项
	if (!fileItem.isFormField()) {
		// 获取文件的名字
		String realName = fileItem.getName();
		user.setRealName(realName);
		// 获取文件后缀名
		String afterName = realName.substring(realName.lastIndexOf(".") + 1);
		//过滤文件类型
		if(!("jpg".equals(afterName.toLowerCase())||"png".equals(afterName.toLowerCase())||"gif".equals(afterName.toLowerCase()))){
			resp.getWriter().write("文件类型不支持,暂时只支持png,jpg,gif");
			return;
		}
		// 测试输出文件后缀名
		//System.out.println(afterName);
		// 获取文件的类型
		String type = fileItem.getContentType();
		user.setType(type);
		// 获取文件保存路径
		String savePath = this.getServletContext().getRealPath("/upload");
		File save = new File(savePath);
		// 测试输出
		// System.out.println(savePath);
		// 判断文件夹是否存在
		if (!save.exists()) {
			// 创建不存在的目录
			save.mkdirs();
		}
		// 获取唯一的uuid,用于文件名
		String uuid = UUID.randomUUID().toString();
		// 生成保存在服务器上的文件名
		String saveName = uuid + "." + afterName;
		// 测试输出生成的文件名
		// System.out.println(saveName);
		// 保存生成的文件名
		user.setPhotoName(saveName);
		// 保存文件
		File file = new File(savePath + "\\" + saveName);
		// 测试输出
		// System.out.println(file.getAbsolutePath());
		try {
			fileItem.write(file);
		} catch (Exception e) {
			e.printStackTrace();
		}
		// System.out.println("文件写出成功!");
	} else {
		if ("uname".equals(fileItem.getFieldName())) {
			user.setUname(fileItem.getString("utf-8"));
		} else if ("pwd".equals(fileItem.getFieldName())) {
			user.setPwd(fileItem.getString());
		} else {
			System.out.println("字段不存在");
		}
	}
}

下载功能实现(核心代码)

	//User是是一个实体类,和数据库中一个表对应,存有图片的一些信息
	//设置页面展示的文件格式
	resp.setContentType(user.getType());
	// 处理请求信息
	// 测试输出
	// System.out.println(user);
	//获取文件的路径,upload位于webRoot或者WebContent
	String filePath= this.getServletContext().getRealPath("/upload")+"/"+user.getPhotoName();
	//获取文件的大小
	File file = new File(filePath);
	//
	resp.setContentLength((int) file.length());
	//获取文件的原名
	String realName =user.getRealName();
	//获取浏览器信息
	String userAgent = req.getHeader("User-Agent").toLowerCase();
	//判断浏览器,针对不同浏览器设置不同的解决方案
	if(userAgent.indexOf("msie")>=0){ 
		//ie的编码解决方式
		realName = URLEncoder.encode(realName, "utf-8");
	}else{
		//其他浏览器的中文解决方式
		byte [] bytes = realName.getBytes("utf-8");
		realName = new String(bytes,"iso-8859-1");
	}	
	resp.setHeader("Content-Disposition", "attachment;filename="+realName);
	// 响应处理结果
	InputStream is = new FileInputStream(file);
	OutputStream os = resp.getOutputStream();
	IOUtils.copy(is, os);
	//关闭流资源
	is.close();
	os.close();

About

使用cmomons-fileupload和commons-io包,基于jsp和servlet完成简易上传下载。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages