上传文件注意事项

上传文件注意事项

客户端

使用form形式multiform-data形式上传文件

服务端接收处理方式

1.页面传入HttpServletRequest request

2.判断request instanceof MultipartHttpServletRequest 若成功则继续进入以下步骤

3.强制类型转换

multipartHttpServletRequest = (MultipartHttpServletRequest) request;

4.获取MultipartFile

MultipartFile file = multipartHttpServletRequest.getFile(“uploadImg”);
//备注:uploadImg为form表单中input的name属性值

5.处理MultipartFile multipartFile

方式1.利用临时文件上传图片

1.将file内容传递给临时文件
 String originalFileName = multipartFile.getOriginalFilename();
    File tempFile= null;
    if (StringUtils.isBlank(originalFileName) || !originalFileName.contains(".")) {
        log.error("uploadImg fileName 为空或者不会包含[.],fileName:{}", originalFileName);
    } else {
        tempFile= File.createTempFile("student", "." + getFileSuffix(originalFileName));
        multipartFile.transferTo(tempFile);
    }
2.将临时文件上传到服务器
3.删除临时文件
方式1: tempFile.deleteOnExit();
  		//备注:此种删除方式只有在jvm正常退出时才会删除临时文件,将测试,在javaWeb项目中,一般情况下jvm都无法正常退出,导致临时文件一直存在,时间长后临时文件不断积累,最后就会占满磁盘空间(不推荐使用)
方式2:tempFile.delete();
  		//备注:此种方式无论文件是否存在,是否在使用,都会删除临时文件,建议在临时文件上传完毕后调用,建议在finally代码块中调用删除临时文件方法.(推荐使用)

方式2.利用FileItem获取输入流上传图片

1.判断MultipartFile的类型
	multipartFile instanceof CommonsMultipartFile
2.强制类型转换,然后获取FileItem
	FileItem item = ((CommonsMultipartFile)uploadImg).getFileItem();
3.从FileItem中获取输入流内容
				//处理上传文件
                String fileName = item.getName();
                //获取上传文件名称
                fileName = fileName.substring(fileName.lastIndexOf("\\") + 1);
                if (StringUtils.isBlank(fileName) || !fileName.contains(".")) {
                    log.error("uploadImg fileName 为空或者不会包含[.],fileName:{}", fileName);
                } else {
                    boolean suffixCheck = false;
                    String suffixName = fileName.substring(fileName.indexOf(".") + 1, fileName.length()).toLowerCase();
                    //校验上传文件扩展名
                    if(StringUtils.isNotBlank(suffixName)) {
                        suffixCheck = imgSuffixList.contains(suffixName);
                    }
                    if (suffixCheck) {
                        //文件扩展名校验通过后,上传到jfs云存储
                         InputStream in = item.getInputStream();
                         }

}

4.将in输出到要保存的文件中

猜你喜欢

转载自blog.csdn.net/u013039395/article/details/86472377