jsp页面
<span style="font-size:14px;"><script type="text/javascript">
function addImge(){
var imgeName=document.getElementsByName("imgeName")[0].value;
var mime = imgeName.toLowerCase().substr(imgeName.lastIndexOf("."));
if(mime==".png" || mime==".jpeg" || mime==".jpg") {
var itemForm = document.getElementById("itemForm");
itemForm.action = "./itemsServlet?commond=addImge&itemsNo="+<%=item.getItemNo()%>;
itemForm.method = "POST";
itemForm.submit();
}else{
alert("请选择PNG或JPEG格式的图片上传 ");
return false;
}
}
</script></span>
<span style="font-size:14px; white-space: pre;"> </span><span style="font-size:14px;"><form name="itemForm" target="_self" id="itemForm" </span><span style="font-size:24px;color:#ff0000;">enctype="multipart/form-data"</span><span style="font-size:14px;">></span>
<span style="font-size:14px;">
<tr>
<td width="22%" height="29">
<div align="right">
<font color="#FF0000">*</font>选择图片:
</div>
</td>
<td width="78%">
<input name="imgeName" type="file" class="text1" size="40" maxlength="40" value=""/>
</td>
</tr>
</span>
<span style="font-size:14px;">private void FileUploadUtil(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{
PrintWriter out = resp.getWriter();
//**********************************************上传文件开始************************************************
//设置request编码,主要是为了处理普通输入框中的中文问题
req.setCharacterEncoding("gb18030");
//这里对request进行封装,RequestContext提供了对request多个访问方法
RequestContext requestContext = new ServletRequestContext(req);
//判断表单是否是Multipart类型的。这里可以直接对request进行判断,不过已经以前的用法了
if(FileUpload.isMultipartContent(requestContext)){
DiskFileItemFactory factory = new DiskFileItemFactory();
//设置文件的缓存路径
//factory.setRepository(new File("F:/javaEE/apache-tomcat-6.0.36/work/imgepy/"));
factory.setRepository(new File(getServletContext().getRealPath("upload")+"/imgespy/"));
ServletFileUpload upload = new ServletFileUpload(factory);
//设置上传文件大小的上限,-1表示无上限
upload.setSizeMax(100*1024*1024);
List items = new ArrayList();
try {
//上传文件,并解析出所有的表单字段,包括普通字段和文件字段
items = upload.parseRequest(req);
} catch (FileUploadException e1) {
out.println("文件上传发生错误" + e1.getMessage());
}
//下面对每个字段进行处理,分普通字段和文件字段
Iterator it = items.iterator();
while(it.hasNext()){
FileItem fileItem = (FileItem) it.next();
//如果是普通字段false为文件信息(主要是过滤表单里的其他信息 true 为非文件表单其他信息)
if(!fileItem.isFormField()){
//判断文件名称是否为Null,或“ ” 文件大小是否为 0
if(fileItem.getName()!=null && fileItem.getSize()!=0){
File fullFile = new File(fileItem.getName());
String myfile=null;
//生成当前系统时间为文件的名字
String name=new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
//获取文件后缀
String pastfix= fullFile.getName().substring(fullFile.getName().lastIndexOf(".")+1);
//重命名文件 时间日期为文件名称 如: yyyMMddHHmmss.png
String imgesName=name+"."+pastfix;
//创建新文件 物目录 + 文件名
//File newFile = new File("F:/javaEE/apache-tomcat-6.0.36/work/imges/" +imgesName);
File newFile = new File(getServletContext().getRealPath("upload")+"\\imges\\"+ imgesName);
//String imgesName2=getServletContext().getRealPath("upload")+"\\imges\\";
//System.out.println("**********filepath************"+imgesName2);
//收集对象的参数
String itemsNo=req.getParameter("itemsNo");
ItemsImge itemsImge=new ItemsImge();
itemsImge.setItemNo(itemsNo);
itemsImge.setImgeName(imgesName);
try {
//写入文件
fileItem.write(newFile);
} catch (Exception e) {
e.printStackTrace();
}
try {
//添加文件名字信息到数据库
ItemsManager itemsManager =(ItemsManager)getServletContext().getAttribute("itemsManager");
itemsManager.addItemsImge(itemsImge);
} catch (AppException e1) {
e1.printStackTrace();
}
}
}
}
}
//**********************************************上传文件结束************************************************
}</span>
上传文件需要用到的jar包:
commons-fileupload-1.1.1.jar 建议也把
commons-io-1.2.jar考入以后有可能用的着。
注意:在上传文件的表单 添加 enctype="multipart/form-data" 属性 否则在servlet无法识别表单
******************注解是自己个写的,由于刚学两天自己网上查阅自学的,有什么不对的地方,请谅解。详情可查询相应的API文档************************