Struts2 实现简单图片上传教程

需积分: 9 4 下载量 139 浏览量 更新于2024-09-13 收藏 60KB DOC 举报
"本文将介绍如何在Struts2框架下实现图片上传功能,提供了一种简易的方法,适合初学者。通过Struts2的内置标签和Apache Commons FileUpload库,可以轻松处理文件上传,同时包含了文件类型的检查和大小限制,以及图片尺寸调整的示例代码。" 在Struts2框架中实现图片上传是一项常见的需求。为了简化这个过程,我们可以利用Struts2提供的标签和Apache Commons FileUpload库。在页面上,我们只需要插入一个Struts2的`<s:file>`标签,用于用户选择要上传的图片: ```jsp <s:file name="NewFile" id="NewFile" label="选择图片"/> ``` 在Action类中,我们需要定义几个字段来存储上传文件的相关信息,包括文件对象、文件名和文件类型: ```java private File NewFile; // 上传文件 private String NewFileFileName; // 上传文件名 private String NewFileContentType; // 上传文件类型 ``` Apache Commons FileUpload库已经为我们封装了文件上传的基本操作,它会自动将文件名、类型等信息赋值给对应的变量。在处理上传请求时,我们首先要对文件类型和大小进行检查。以下是一个简单的示例: ```java if (ImageUtils.checkImgType(NewFileContentType)) { if (NewFile != null) { if (NewFile.length() > 1048576L) { addActionMessage("<font color='red'>图片太大!</font>"); return "add-ticket"; } setImg(NewFile); } } ``` 在这个例子中,`checkImgType`方法用于验证文件是否为常见的图片类型(如JPEG、GIF、JPG),如果满足条件则继续处理,否则返回错误提示。对于文件大小的检查,这里设定了1MB的限制。 为了处理图片,我们可以创建一个工具类`ImageUtils`,包含检查图片类型的方法: ```java public static boolean checkImgType(String type) { return type.equals("image/pjpeg") || type.equals("image/gif") || type.equals("image/jpeg") || type.equals("image/jpg"); } ``` 当图片符合要求后,我们可以将其保存到服务器并可能需要调整大小。以下是一个简化的示例,展示了如何读取上传的图片,并将其调整为指定的尺寸: ```java private void setImg(File f) throws Exception { Image bImg = ImageIO.read(f); Image i = bImg.getScaledInstance(310, 185, bImg.SCALE_REPLICATE); BufferedImage img = new BufferedImage(i.getWidth(null), i.getHeight(null), BufferedImage.TYPE_INT_RGB); Graphics g = img.createGraphics(); g.drawImage(i, 0, 0, null); // 保存调整后的图片到服务器 } ``` 这只是一个基本的实现,实际项目中可能还需要处理更多细节,如异常处理、文件重命名、存储路径管理等。Struts2和Apache Commons FileUpload结合使用,可以方便地实现图片上传功能,同时确保上传的安全性和用户体验。