在action中的字段属性
private File fileup;// 要上传的文件,与表单中的input标签的name一致
private String fileupContentType;// 文件类型,固定格式:上传的文件+ContentType
private String fileupFileName;// 文件名称,固定格式:上传的文件+FileName
private String path;// 上传服务器的路径名称
//此处省略set和get方法
此处列举添加房间图片的例子
public String add() {
try {
// 获取要保存的服务器路径的绝对路径
String p = ServletActionContext.getServletContext().getRealPath(
path);
// 判断该上传的文件夹是否存在
File file = new File(p);
if (!file.exists()) {
file.mkdir();// 如果不存在文件夹,需要创建
}
// 生成要保存的文件名称
String fileName = (new Date()).getTime()
+ fileupFileName.substring(fileupFileName.lastIndexOf("."));
// 文件上传
FileUtils.copyFile(fileup, new File(p, fileName));
// -------------生成缩略图----------------
ServletRequest request = ServletActionContext.getRequest();
java.io.File file1 = new java.io.File(request.getRealPath("/")
+ "upload\\" + fileName); // 读入刚才上传的文件
String newurl = request.getRealPath("/") + "upload/thumb/"
+ fileName;// 新的缩略图保存地址
Image src = javax.imageio.ImageIO.read(file1); // 构造Image对象
int old_w = src.getWidth(null); // 得到源图宽
int old_h = src.getHeight(null); // 得到源图长
int new_w = 100;
int new_h = 100;
BufferedImage tag = new BufferedImage(new_w, new_h,
BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(src, 0, 0, new_w, new_h, null); // 绘制缩小后的图
FileOutputStream newimage = new FileOutputStream(newurl); // 输出到文件流
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);
encoder.encode(tag); // 近JPEG编码
newimage.close();
// -------------缩略图结束----------------
room.setR_picture(fileName);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
roomBiz.add(room);
findAll();
return "ok";
}
接下来:
(1)我们要创建文件夹:upload文件夹和在upload文件夹下创建一个thumb文件夹(缩略图文件夹)
(2)配置struts.xml文件:
<action name="SysRoom_*" class="action.RoomAction" method="{1}">
<!--fileupload拦截器-->
<interceptor-ref name="defaultStack">
<param name="fileUpload.maximumSize">1024000</param> <!--指定允许上传的文件的最大字节数-->
<!--指定允许上传的文件的类型 allowedExtensions:指定允许上传的文件的扩展名-->
<param name="fileUpload.allowedTypes">image/bmp,image/png,image/gif,image/jpeg,image/jpg,image/pjpeg</param>
</interceptor-ref>
<param name="path">/upload</param> <!--依赖注入属性-->
<result name="ok">/admin/room.jsp</result>
<result name="add">/admin/addRoom.jsp</result>
</action>
(红色部分每次使用的时候都一样)
(3)我们在要进行使用上传文件的表单中进行编写(蓝色部分别忘添加,否则无效果)
<form action="${actionUrl }" method="post" enctype="multipart/form-data">
<tr>
<td width="5%" height="20" bgcolor="d3eaef" class="STYLE6">
<div align="center"><span class="STYLE10">上传图片:</span></div>
</td>
<td width="95%" height="20" bgcolor="d3eaef" class="STYLE6">
<div align="left"><span class="STYLE10"><input type="file"
name="fileup" value="${article.a_url }" /></span></div>
//红色部分中的name必须和action中的属性fileup一样
</td>
</tr>
附加:我们在进行读取图片时:<img src="../upload/${art.a_url }" width="500px" height="300px" />,可以用img进行读取
</form>