Java文件上传

今天不想说废话,直接写过程:

第一步、导包(下载回去自己解压)

链接:https://pan.baidu.com/s/1wLeITdlzohl_dMckmRkH4w  密码:kw2u

 

第二步、我自己封装了一个方法专门处理,以后用直接复制这个文件

// 解析 request 里面的文件,存储在path目录下。返回文件路径列表
public static List<String> parseRequest(HttpServletRequest request, String path) throws FileUploadException, IOException {
    List<String> paths = null;
	// 创建文件解析器
	DiskFileItemFactory factory = new DiskFileItemFactory();
	ServletFileUpload upload = new ServletFileUpload(factory);
	// 设置解析编码
	upload.setHeaderEncoding("UTF-8"); 
	// 请求里面没有文件不予处理
	if(!ServletFileUpload.isMultipartContent(request)){
	    return null;
	}
	// 获取表单中每一个输入项(可以不是文件类型)
	List<FileItem> list = upload.parseRequest(request);
	for(FileItem item: list) {
	    // 普通表单类型不予处理
	    if(item.isFormField()) continue;
	    if(paths == null) paths = new ArrayList<>();
	    // 获取上传文件的名称,若文件不存在不予处理
	    String filename = item.getName();
	    if(StringUtils.isEmpty(filename)) continue;
	    System.out.println("解析" + filename + "文件中");
	    // 统一使用 UUID 修改名称
	    filename = UUID.randomUUID().toString() + filename.substring(filename.indexOf("."));
	    InputStream in = item.getInputStream();
	    paths.add(String.join("/", path, filename));
	    FileOutputStream out = new FileOutputStream(String.join("/", path, filename));
	    byte []buffer = new byte[1024];
		int len = 0;
		while((len = in.read(buffer)) > 0) {
			out.write(buffer, 0, len);
		}
		in.close();
		out.close();
		// 删除临时文件
		item.delete();
	}
	return paths;
}

第三步、servlet接收到请求时把request交给这个方法处理。其他表单域还像原来那样处理

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值