您的位置:首页 > 编程语言 > Java开发

Java Servlet实现文件上传

2012-08-23 15:44 239 查看
上传Servlet的实现代码
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String id = null;
Affiche affiche = new Affiche();//自定义的一个简单javabean
boolean isMultipart = ServletFileUpload.isMultipartContent(request);// 判断提交的表单是不是普通表单,不是的话就进行上传
if (isMultipart) {// 不是普通表单的话就进行上传
FileItemFactory factory = new DiskFileItemFactory();// 固定用法,创建一个FileItemFactory对象
ServletFileUpload upload = new ServletFileUpload(factory);// 固定用法,创建一个ServletFileUpload对象
Iterator<FileItem> items;// 定义一个保存所有表单数据的集合
try {
items = upload.parseRequest(request).iterator();// 将表单数据全部赋值给items
while (items.hasNext()) {// while循环迭代items,得到所有的表单数据
FileItem item = items.next();
if (!item.isFormField()) {// 判断此表单数据是否是file类型没事的话  就进行上传
String name = item.getName();// 得到file文件的名字
String fileName = name.substring(name.lastIndexOf('\\') + 1, name.length());
fileName = System.currentTimeMillis() + "_" + fileName;// 生成保存file的文件名,利用当前时间的毫秒值加上源文件的后缀名
String path = request.getSession().getServletContext().getRealPath("upload")
+ File.separatorChar + fileName;// 生成保存该文件的路径名
System.out.println(path);
File uploadedFile = new File(path);
item.write(uploadedFile);// 保存文件
affiche.setAfFilepath(path);
} else {// 如果不是file类型的表单,那么就进行简单的赋值操作,注意这里不能再简单的用reqeuest.getParameter("")得到页面传递的表单数据,因为全部封装到items这个集合了
if ("id".equals(item.getFieldName())) { //获取非上传参数
id = item.getString("gb2312");
}
if ("time".equals(item.getFieldName())) {//获取非上传参数

affiche.setAfEnabletime(parseDate(item.getString("gb2312")));
}
if ("title".equals(item.getFieldName())) {//获取非上传参数

affiche.setAfTitle(item.getString("gb2312"));
}
if ("content".equals(item.getFieldName())) {//获取非上传参数

affiche.setAfContent(item.getString("gb2312"));
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

}

//转换日期的小函数

private Date parseDate(String str) {
SimpleDateFormat dd = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
try {
date = dd.parse(str);
} catch (ParseException e) {
}
return date;
}
JSP页面实现代码
<form action="afficheManager?act=save" method="post" enctype="multipart/form-data">

<table cellspacing="0" cellpadding="1" border="1" width="70%"
style="border: 1px solid #FF34B3">
<tr>
<td width="10%" style="border: 1px solid #FF34B3">
公告标题:
</td>
<td align="left" style="border: 1px solid #FF34B3">
<input id="title" type="text" name="title" size="50">
</td>
</tr>
<tr>
<td width="10%" style="border: 1px solid #FF34B3">
公告内容:
</td>
<td align="left" style="border: 1px solid #FF34B3">
<textarea id="content" name="content" rows="10" cols="80"></textarea>
</tr>
<tr>
<td width="10%" style="border: 1px solid #FF34B3">
有效时间:
</td>
<td align="left" style="border: 1px solid #FF34B3">
<input type="text" name="time" size="30">
(YYYY-MM-DD)
</td>
</tr>
<tr>
<td width="10%" style="border: 1px solid #FF34B3">
相关文件:
</td>
<td align="left" style="border: 1px solid #FF34B3">
<input type="file" name="file" size="40" >
</td>
</tr>
<tr>
<td align="center" colspan="2" style="border: 1px solid #FF34B3">
<input type="submit" value=" 添加 ">         |  
<input type="button" onclick="javascript:history.go(-1)" value=" 返回 ">
</td>
</tr>
</table>
</form>
Affiche JavaBean实现代码:
package com.wxl.po;

import java.util.Date;

public class Affiche {
private int afId;
private String dpId;
private String afTitle;
private String afContent;
private Date afTime;
private Date afEnabletime;
private String afFilepath;

//..一些get..set方法

}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: