1**. 需要用到commons-FileUpload组件**
获取组件可以去网上下载 http://commons.apache.org/fileupload下载Commons-FileUpload组件
http://commons.apache.org/io下载Commons-IO组件
2. 组件1 Commons-FileUpload组件类库:commons-fileupload-1.2.2.jar API文档: apidocs
3. 组件2 Commons-IO组件类库:commons-io-2.4.jar commons-io-2.4\docs
5. 常用方法:
ServletFileUpload类的常用方法
public void setSizeMax(long sizeMax ) 设置请求信息内容的最大字节数
public List parsRequest(httpServletRequest req ) 解析表单中的每个字符的数据返回一个FileItem对象集合
public statc final Boolean isMultipartCounten(HttpServletRequest req) 判断请求信息的内容是不是“multipart/form-data“类型
public void setHeaderEncoding(String encoding) 设置转换时所使用的字符集编码 FileItem接口的常用方法
public boolean isFormField()判断FileItem对象封装的数据类型(普通表单字段返回true,文件表单字段返回false)
public String getName() 获得文件上传字段中的文件名(普通表单字段返回null)
public String getFieldName()返回表单字段元素的name属性值
public void write() 将FileItem对象中保存的主体内容保存到指定的文件中
public String getString()
public long getSize() 返回单个上传文件的字节数
FileItemFactory接口与实现类
public void setSizeThreshold(int sizeThreshold) 设置内存缓冲区的大小
public void setRepositoryPath(String path ) 设置临时文件存放的目录
- 步骤
a) 先将表单的enctype 属性改为 “multipart/form-data” 方法 为 post
c) 创建FileItemFactory对象 FileItemFactory fifactory = new DiskFileItemFactory();
d) 创建ServletFileUpload对象
ServletFileUpload fileUpload = new ServletFileUpload(fifactory);
e) 可以在这里 设置文件的大小
try catch fileUpload.setFileSizeMax(1024);//设置上传最大字节数
f) 解析form表单中所有文件
List items = fileUpload.parseRequest(request);
表单元素 FileItem 分为两类:普通(text/password…)、文件域(file)
g) //遍历表单元素 判断是普通文件还是file文件进行操作
h) 如果是file文件 获取原文件名-》
String fileName = i.getName(); 获取后缀-》
String ext = fileName.substring(fileName.indexOf(’.’));
String ext = FilenameUtils.getExtension(fileName);
//io.jar 两种方式
i) 限制允许上传的文件类型
String[] allowExt = new String[] { “doc”, “jpg”, “txt” };
j) 判断是否符合文件类型 如果符合—》
String 一个文件上传的目录
k) 创建io对象
File file = new File(path + “\” + Math.random() * 100 + “.” + ext);
重新命名防止重名 然后加上后缀ext 最后 i.write(file);实现读写
来源:CSDN
作者:吃瓜袋鼠
链接:https://blog.csdn.net/weixin_43246116/article/details/103484547