用java实现上传功能

2024-11-16 03:47:12
推荐回答(3个)
回答1:

下面是我用过的一段代码,fileupload、servlet搞的

DiskFileItemFactory factory = new DiskFileItemFactory();//为该请求创建一个DiskFileItemFactory对象,通过它来解析请求。执行解析后,所有的表单项目都保存在一个List中。
factory.setSizeThreshold(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(-1);
upload.setHeaderEncoding("UTF-8");
List items;//对应jsp表单的域
File icon = null;//这是我要保存的文件,是一个icon
try {
items = upload.parseRequest(request);//通过request获得请求表单的域
if(items!=null&&items.size()>0){
Iterator itr = items.iterator();
while(itr.hasNext()){
FileItem item = (FileItem) itr.next();
if(item.isFormField()){
//普通表单域
String fieldName = item.getFieldName();//表单域的name属性
String value = item.getString("UTF-8");//表单域的value或者textarea的内容
if("news.title".equals(fieldName)){
news.setTitle(value);
}
...
}else{
//如果不是普通的表单域,即文本域
String fieldName = item.getFieldName();//文本域的name属性
String value = item.getName();//文件名
if("icon".equals(fieldName)){
if(!StringUtils.isEmpty(value)){
String filename = String.valueOf(UUID.randomUUID());
new File(WinWinConstant.file_path+File.separatorChar+WinWinConstant.NEWS).mkdirs();
//设置icon保存的路径
icon = new File(WinWinConstant.file_path+File.separatorChar+WinWinConstant.NEWS + File.separatorChar + filename+value.substring(value.lastIndexOf('.')));
item.write(icon);//保存文件
}
}
...

}
}
}
}catch(Exception e){
e.printStackTrace();
}

回答2:

为什么不用插件?smartuploader可以解决

回答3:

学习smartUpload的源码。