maven配置smartupload_java基础篇---文件上传(smartupload组件)

import java.io.*;

import java.util.*;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.FileUploadException;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;public classFileUploadTools {private HttpServletRequest request = null; //取得HttpServletRequest对象

private List items = null; //保存全部的上传内容

private Map> params = new HashMap>(); //保存所有的参数

private Map files = new HashMap();private int maxSize = 3145728; //默认的上传文件大小为3MB,3 * 1024 * 1024

public FileUploadTools(HttpServletRequest request, intmaxSize,

String tempDir) throws Exception {//传递request对象、最大上传限制、临时保存目录

this.request = request; //接收request对象

DiskFileItemFactory factory = new DiskFileItemFactory(); //创建磁盘工厂

if (tempDir != null) { //判断是否需要进行临时上传目录

factory.setRepository(new File(tempDir)); //设置临时文件保存目录

}

ServletFileUpload upload= new ServletFileUpload(factory); //创建处理工具

if (maxSize > 0) { //如果给的上传大小限制大于0,则使用新的设置

this.maxSize =maxSize;

}

upload.setFileSizeMax(this.maxSize); //设置最大上传大小为3MB,3 * 1024 * 1024

try{this.items = upload.parseRequest(request);//接收全部内容

} catch(FileUploadException e) {throw e; //向上抛出异常

}this.init(); //进行初始化操作

}private void init() { //初始化参数,区分普通参数或上传文件

Iterator iter = this.items.iterator();

IPTimeStamp its= new IPTimeStamp(this.request.getRemoteAddr()) ;while (iter.hasNext()) { //依次取出每一个上传项

FileItem item = iter.next(); //取出每一个上传的文件

if (item.isFormField()) { //判断是否是普通的文本参数

String name = item.getFieldName(); //取得表单的名字

String value = item.getString(); //取得表单的内容

List temp = null; //保存内容

if (this.params.containsKey(name)) { //判断内容是否已经存放

temp = this.params.get(name); //如果存在则取出

} else { //不存在

temp = new ArrayList(); //重新开辟List数组

}

temp.add(value);//向List数组中设置内容

this.params.put(name, temp); //向Map中增加内容

} else { //判断是否是file组件

String fileName =its.getIPTimeRand()+ "." + item.getName().split("\\.")[1];this.files.put(fileName, item); //保存全部的上传文件

}

}

}public String getParameter(String name) { //取得一个参数

String ret = null; //保存返回内容

List temp = this.params.get(name); //从集合中取出内容

if (temp != null) { //判断是否可以根据key取出内容

ret = temp.get(0); //取出里面的内容

}returnret;

}public String[] getParameterValues(String name) { //取得一组上传内容

String ret[] = null; //保存返回内容

List temp = this.params.get(name); //根据key取出内容

if (temp != null) { //避免NullPointerException

ret = temp.toArray(new String[] {});//将内容变为字符串数组

}return ret; //变为字符串数组

}public Map getUploadFiles() {//取得全部的上传文件

return this.files; //得到全部的上传文件

}public List saveAll(String saveDir) throws IOException { //保存全部文件,并返回文件名称,所有异常抛出

List names = new ArrayList();if (this.files.size() > 0) {

Set keys = this.files.keySet(); //取得全部的key

Iterator iter = keys.iterator(); //实例化Iterator对象

File saveFile = null; //定义保存的文件

InputStream input = null; //定义文件的输入流,用于读取源文件

OutputStream out = null; //定义文件的输出流,用于保存文件

while (iter.hasNext()) { //循环取出每一个上传文件

FileItem item = this.files.get(iter.next()); //依次取出每一个文件

String fileName = new IPTimeStamp(this.request.getRemoteAddr())

.getIPTimeRand()+ "." + item.getName().split("\\.")[1];

saveFile= new File(saveDir + fileName); //重新拼凑出新的路径

names.add(fileName); //保存生成后的文件名称

try{

input= item.getInputStream(); //取得InputStream

out = new FileOutputStream(saveFile); //定义输出流保存文件

int temp = 0; //接收每一个字节

while ((temp = input.read()) != -1) { //依次读取内容

out.write(temp); //保存内容

}

}catch (IOException e) { //捕获异常

throw e; //异常向上抛出

} finally { //进行最终的关闭操作

try{

input.close();//关闭输入流

out.close(); //关闭输出流

} catch(IOException e1) {throwe1;

}

}

}

}return names; //返回生成后的文件名称

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值