文件的上传FileUpLoad

此生再无相见时 提交于 2019-12-14 11:26:34

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 ) 设置临时文件存放的目录

  1. 步骤
    a) 先将表单的enctype 属性改为 “multipart/form-data” 方法 为 post
b) 放两个jar上去

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);实现读写

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!