关于java文件上传的学习

使用的 两个包

commons-io-2.4.jar

commons-fileupload-1.22.jar

 private int sizeThreshold = DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD;//工厂大小
    private int filesize = -1;//上传文件无限制
    private String encode ="UTF-8";
public void parse(HttpServletRequest request){
DiskFileItemFactory factory = new DiskFileItemFactory();
//
factory.setSizeThreshold(sizeThreshold);
// factory.setRepository(repository);
ServletFileUpload upload = new ServletFileUpload(factory);
//设置上传大小
upload.setFileSizeMax(filesize);
String targetDierctory = request.getRealPath("/upload");
try {
List items = upload.parseRequest(request);
Iterator iter = items.iterator();
while(iter.hasNext()){
FileItem item = (FileItem) iter.next();
if(item.isFormField()){
String fieldName = item.getFieldName();
//表单内容
String str = item.getString();
System.out.println(fieldName);
System.out.println(new String(str.getBytes("ISO-8859-1"),encode));
} else{
//文件名称
String value = item.getName();
//字段名称
String str2 = item.getFieldName();
// save(targetDierctory,value,item.get());
System.out.println(value);
// System.out.println(str2);
}
item.delete();//清楚tmp文件的缓存TMP
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
}
}
public void save(String dir , String filename,byte b[]){
File targetdir = new File(dir);
if(!targetdir.exists()){
if(!targetdir.mkdirs()){
try {
throw new Exception("Create File Folder Error...");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
OutputStream out = null;
try {
out = new PrintStream(new File(targetdir,filename));
out.write(b);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
out.flush();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

几个主要 注意的 地方  如果是 文件的 话

item.getName()方法 ,会根据 浏览器的不同 取出的值不同  一般用 .replace("\\","/");

item.getFiledName()方法是 获取 表单提交时候的 name名称

如果提交的不是 文件 item.getString() 获得的字符串的 编码 貌似是 "ISO-8859-1“   取得byte[]重新 安装utf-8构造 String

上传完有 在 tomcat 的 temp文件里会有 许多 tmp 文件 消除的 办法是在 item操作结束后 加 Item.delete()


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值