分类: 系统运维
2009-08-18 10:12:20
因为最近工作需要,研究了一下FileUpload组件,因为还没有全部弄明白,所以写的代码并不完善.尤其是下载还没有做.但是考虑到有的朋友能和我一样,需要这方面的代码例子,所以把自己的代码拿出来,不好的话.不要扔鸡蛋 ^_^
文件上传页面 inputUpLoad.jsp :
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.io.*" %>
<%@ page import="javax.servlet.*" %>
<%@ page import="javax.servlet.http.*" %>
上传处理页面,js实现页面自动跳转 getUpLoad.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<%@ page import="org.apache.commons.fileupload.*" %>
<%@ page import="org.apache.commons.beanutils.*" %>
<%@ page import="javax.servlet.*" %>
<%@ page import="javax.servlet.http.*" %>
<%@ page import="java.sql.*" %>
<%@ taglib prefix="c" uri="/WEB-INF/c.tld"%>
DiskFileUpload dfu = new DiskFileUpload();// 创建一个DFU对象
dfu.setHeaderEncoding("UTF-8");//进行编码转换,防止上传中文出现乱码
dfu.setSizeMax(100000000);//设置上传文件最大值 单位:字节
dfu.setSizeThreshold(4096);//设置内存保存的文件最大值 单位:字节
dfu.setRepositoryPath("F:\\upload");//设置上传文件路径
try{
List FileItems = dfu.parseRequest(request);//FileUpLoad组件request获得上传文件相关信息
Iterator i = FileItems.iterator();//迭代方法,用于多文件上传
String fileName = null;
long size = 0;
while(i.hasNext()){//循环读取上产文件
FileItem fi = (FileItem)i.next();
if(!fi.isFormField()){
fileName = fi.getName();//获得文件名
size = fi.getSize();//获得文件大小
if((fileName==null||fileName.equals("")) && size==0){
continue;
}
fileName = fi.getName();
size = fi.getSize();
fileName = fileName.replace(':','*');//字符转换
fileName = fileName.replace('\\','*');//字符专函
fileName = fileName.substring(fileName.lastIndexOf("*")+1);//去除文件保存前缀.只保留文件名
File writeFile = new File("F:\\upload",fileName);
fi.write(writeFile);//写入文件
}
}
%>
因为servlet需要修改xml文件,比较麻烦,所以将处理流程全部写到页面上了,包括数据库链接,虽然不符合规范,但是功能实现了.希望有高手 能够指点不足.另外补充一下.要实现全部FileUpLoad的全部功能.很多朋友说要用到FileUpLoad本身jar包和beanutil的jar 包,其实除了这两个还需要一个commons-io包,有些问题就是因为没有引入io所致.
就先写到这里了.如果有意见和建议,希望能够直接联系!
附上需要jar包:
FileUpLoad jar包:
beanutil jar包:
io jar包:
chinaunix网友2009-08-29 22:15:54
通过upload取得哪些标题、内容和文件名,我怎么在外边都取不到 ,数据库,只能在那个upload try里面调用么,才能获得哪些参数?