Struts2 实现简单图片上传教程
需积分: 9 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结合使用,可以方便地实现图片上传功能,同时确保上传的安全性和用户体验。
566 浏览量
2013-05-26 上传
2012-03-20 上传
2011-11-25 上传
2018-05-24 上传
2012-03-28 上传
2011-10-26 上传
106 浏览量
2019-03-28 上传
jingdouzi
- 粉丝: 0
- 资源: 2
最新资源
- 探索AVL树算法:以Faculdade Senac Porto Alegre实践为例
- 小学语文教学新工具:创新黑板设计解析
- Minecraft服务器管理新插件ServerForms发布
- MATLAB基因网络模型代码实现及开源分享
- 全方位技术项目源码合集:***报名系统
- Phalcon框架实战案例分析
- MATLAB与Python结合实现短期电力负荷预测的DAT300项目解析
- 市场营销教学专用查询装置设计方案
- 随身WiFi高通210 MS8909设备的Root引导文件破解攻略
- 实现服务器端级联:modella与leveldb适配器的应用
- Oracle Linux安装必备依赖包清单与步骤
- Shyer项目:寻找喜欢的聊天伙伴
- MEAN堆栈入门项目: postings-app
- 在线WPS办公功能全接触及应用示例
- 新型带储订盒订书机设计文档
- VB多媒体教学演示系统源代码及技术项目资源大全