您的位置:首页 > 运维架构 > Apache

使用Apache的FileUpLoad完成文件上传(源码+完整注释)

2017-02-09 19:02 489 查看
1.导入fileupload相关jar包

commons-fileupload-1.2.1.jar

commons-io-1.4.jar



2.建立表单(包含文件上传三要素)

enctype=”multipart/form-data”

method=”post”

文件项:
文件项:<input type="file" name="file"/>




3.fileupload文件上传源码

try {

//创建磁盘文件项工厂

DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();

//设置缓存区的大小,如果文件的大小超过了缓存区的大小,就会产生临时文件

diskFileItemFactory.setSizeThreshold(6*1024*1024);

//设置临时文件存放路径

//diskFileItemFactory.setRepository(new File(“”));

// 获得核心解析类:ServletFileUpload

ServletFileUpload fileUpload = new ServletFileUpload(diskFileItemFactory);

//解决中文文件上传乱码的问题

fileUpload.setHeaderEncoding(“utf-8”);

//设置单个文件的最大值

//fileUpload.setFileSizeMax(fileSizeMax);

//设置表单中所有表单中所有文件上传项的大小

//fileUpload.setSizeMax(sizeMax);

//解析request获取各个部分(fileItem)

List list = fileUpload.parseRequest(request);

for (FileItem fileItem : list) {

//判断fileItem是不是普通输入项

if (fileItem.isFormField()) {

//获取input标签的name属性的值

String name = fileItem.getFie
4000
ldName();

//获取input标签的value

String value = fileItem.getString(“utf-8”);

}else{

//说明是文件上传项

//获取文件名

String name = fileItem.getName();

//获取输入流

InputStream inputStream = fileItem.getInputStream();

String path = this.getServletContext().getRealPath(“/fileup”);

//获取输出流

FileOutputStream outputStream = new FileOutputStream(path +”/” +name);

//使用IOUtil完成两流的对接

IOUtils.copy(inputStream, outputStream);

inputStream.close();

outputStream.close();

}

}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  apache fileupload