所需jar包
commons-io-current-bin.tar.gz包的三个文件全部放进lib中
commons-fileupload-1.2.1-bin.zip包中的commons-fileupload-1.2.1.jar放进去
上传图片的代码示例:
文件发送页
send.jsp
<html>
<img id="img" name="img"/>
<form action="accept.jsp" enctype="multipart/form-data">
<input type="file" id="name"/>
<input type="submit"/>
</form>
//对加入的图片的预览
<script language="javascript">
function previewA()
{
var x = document.getElementById("name"); //singimage为FORM中已存在的IMAGE标签ID
if(!x || !x.value) return;
var patn = /\.jpg$|\.jpeg$|\.gif$/i; //正则表达式,判断所选文件是否图片
if(patn.test(x.value))
{
var img=document.getElementById('img');
img.setAttribute('width','90');
img.setAttribute('height','120');
img.src= 'file://localhost/' + x.value;
}
else
{
alert("您选择的似乎不是图像文件。");
}
}
</script>
</html>
要注意enctype值有:application/x-www-form-urlencoded,multipart/form-data,text/plain
第一项是用来传送文件时的(设为此不可传参数),第二项是用来传送参数时用的(设为此不可传文件)
文件接收页
accept.jsp
//-----------------------------------先处理图书图片的问题------------
try{
String loadpath=request.getSession().getServletContext().getRealPath("/")+"src//bookpic";//上传文件的存放目录
String temp=request.getSession().getServletContext().getRealPath("/")+"src//bookpic//temp"; //临时目录
// 文件内容
String FileDescription = null;
// 文件名(包括路径)
String FileName = null;
// 文件大小
long FileSize = 0;
// 文件类型
String ContentType = null;
DiskFileUpload fu = new DiskFileUpload();//创建一个新的文件上传句柄
// 设置允许用户上传文件大小,单位:字节
fu.setSizeMax(200*1024*1024);
// 设置最多只允许在内存中存储的数据,单位:字节
fu.setSizeThreshold(1024 * 1024);
// 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
fu.setRepositoryPath(temp);
List fileItems = fu.parseRequest(request);
Iterator iter = fileItems.iterator(); // 依次处理每个上传的文件
while (iter.hasNext())
{
FileItem item = (FileItem)iter.next();// 忽略其他不是文件域的所有表单信息
if (!item.isFormField())
{
String name = item.getName();//获取上传文件名,包括路径,如E:/em/22.jpg
long size = item.getSize();
if((name==null||name.equals("")) && size==0) continue;
int point = name.indexOf(".");//为了取得扩展名,如:.jpg
name=tsISBN+name.substring(point,name.length());//写入文件的名字liudong.jpg
tspicaddress=name;
File fNew= new File(loadpath, name);//路径,文件名(c:/image,liudong.jpg).意思是:在c:/image下放liudong.jpg
item.write(fNew);//写文件liudong.jpg
}
else //取出不是文件域的所有表单信息
{
String fieldvalue = item.getString();
//如果包含中文应写为:(转为UTF-8编码)
//String fieldvalue = new String(item.getString().getBytes(),"UTF-8");
}
}
}catch(Exception fl){
fl.printStackTrace();
}
tspicaddress=tsISBN+".jpg";