今天突然要做图片上传,上个公司做过这个功能,但是代码没有备份,导致今天浪费了1个小时的时间,深感有用的代码要及时的做下记录。现将代码备份如下:
项目是ssh2框架,所以jsp中会有ognl代码,页面是更新页面,所以会有隐藏的原图片文件名,如果是新增页面将隐藏input去掉即可。
1、jsp页面代码
<form action="good!upOrSaveGood" method="post" enctype="multipart/form-data">
<input type="hidden" name="good.image" value="<s:property value="good.image"/>"/>
<input type="file" name="file" title="选择上传的文件"/>
<font style="color:red;margin-left:10px;font-size:12px;">图片格式必须为jpg,png,gif</font>
</form>
2、action代码
package com.cn.sysAction;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import org.apache.struts2.ServletActionContext;
import com.cn.entity.Goods;
import com.cn.entity.GoodsCategory;
import com.cn.service.CateService;
import com.cn.service.GoodsService;
import com.opensymphony.xwork2.ActionSupport;
/**
* 项目名称:lineOrder
* 实现功能: 商品管理页面显示
* 类名称:LoginAction
* 类描述:(该类的主要功能)
* 创建人:
* 创建时间:2013-4-1 下午05:28:33
* 修改人:
* 修改时间:
* 修改备注:
* @version
*/
public class GoodsAction extends ActionSupport {
private static final long serialVersionUID = 1L;
@Resource(name="goodsServiceImpl")
public GoodsService goodsService;
public Goods good;
//--start----------文件上传----------------------
//代表上传文件的file对象
private File file;
//上传文件名
private String fileFileName;
//上传文件的MIME类型
private String fileContentType;
//保存上传文件的目录
private String uploadDir = "goodsImages";
//新文件名称
private String newFileName = null;
//原文件名
private String fileString;
//--end------------文件上传----------------------
/**
* @方法名称: upGood
* @描述: 更新或新增商品信息
* 创建人:
* @return String
* @param @return
*/
public String upOrSaveGood(){
try{
if(file!=null){
//上传图片
upload();
//如果是更新操作
if(good.getGid()!=null){
fileString = good.getImage();
//删除以前的图片
delGoodsImage(fileString);
}
//将新图片名称放入实体
good.setImage(newFileName);
}
//如果商品编号为空,表示为新增
if(good.getGid()==null){
goodsService.saveGood(good);
message = "保存成功!";
}else{
//如果商品编号不为空,表示为更新
goodsService.upGood(good);
message = "更新成功!";
}
}catch(Exception e){
message = "操作失败!";
}
return "upOrSaveGood";
}
/**
* @方法名称: copyImg
* @描述: 图片上传处理
* 创建人:
* @return void
* @param @param srcFile
* @param @param destFile
* @param @throws IOException
*/
public void upload() throws IOException{
// 得到当前时间自1970年1月1日0时0分0秒开始流逝的毫秒数,将这个毫秒数作为上传文件新的文件名。
long now = new Date().getTime();
// 得到保存上传文件的目录的真实路径
String path = ServletActionContext.getServletContext().getRealPath(uploadDir);
File dir = new File(path);
// 如果这个目录不存在,则创建它。
if (!dir.exists())
dir.mkdir();
int index = fileFileName.lastIndexOf('.');
// 判断上传文件名是否有扩展名
if (index != -1)
newFileName = now + fileFileName.substring(index);
else
newFileName = Long.toString(now);
BufferedOutputStream bos = null;
BufferedInputStream bis = null;
// 读取保存在临时目录下的上传文件,写入到新的文件中。
try {
FileInputStream fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
FileOutputStream fos = new FileOutputStream(new File(dir,newFileName));
bos = new BufferedOutputStream(fos);
byte[] buf = new byte[4096];
int len = -1;
while ((len = bis.read(buf)) != -1) {
bos.write(buf, 0, len);
}
} finally {
try {
if (null != bis)
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
if (null != bos)
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* @方法名称: delGoodsImage
* @描述: 删除图片
* 创建人:
* @return void
* @param @param fileString
*/
public void delGoodsImage(String fileString){
//判断商品是否有图片,如果为更新商品操作
if(fileString!=null&&!"".equals(fileString)){
String path = ServletActionContext.getServletContext().getRealPath(uploadDir);
File dir = new File(path+"/"+fileString);
// 如果这个文件已存在,则删除。
if (dir.isFile())
dir.delete();
}
}
public Goods getGood() {
return good;
}
public void setGood(Goods good) {
this.good = good;
}
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
public String getFileFileName() {
return fileFileName;
}
public void setFileFileName(String fileFileName) {
this.fileFileName = fileFileName;
}
public String getFileContentType() {
return fileContentType;
}
public void setFileContentType(String fileContentType) {
this.fileContentType = fileContentType;
}
public String getUploadDir() {
return uploadDir;
}
public void setUploadDir(String uploadDir) {
this.uploadDir = uploadDir;
}
public String getNewFileName() {
return newFileName;
}
public void setNewFileName(String newFileName) {
this.newFileName = newFileName;
}
}
3、struts2.xml配置文件
<action name="good" class="com.cn.sysAction.GoodsAction">
<result name="goodDetail">/sysadmin/goodDetail.jsp</result>
<interceptor-ref name="defaultStack">
<param name="fileUpload.maximumSize">102400</param>
<param name="fileUpload.allowedTypes">
image/bmp,image/png,image/gif,image/jpeg,image/jpg,image/pjpeg ,image/bmp, image/gif, image/x-png,
</param>
</interceptor-ref>
</action>
分享到:
相关推荐
这没有用到什么东西,只是用jsp+struts做了一个上传功能。可以上传很多类型的文件,不受任何限止
数据库mysql,数据库名test,用户名root,密码root,表名user,字段和User类中字段一样,多了一个自增的id字段
jsp+struts2 编写的 以图搜图demo,图片库 目录为WebRoot\medias\images,上传图片后会自动获取该目录下所有图片文件并比对。
压缩文件中不包含Jar文件(由于全部的Jar将近12M,不能全部上传),所用到的Jar目录为,工程中再也不会出现由于MyEclipse自动整合而出现的大量Jar文件 : Java代码 1. //如果不用,启动时不会出错,但使用Dwr时,会...
struts2+jsp 文件上传,供大家一起共同分享学习。
学javaweb课程 的大作业。界面仿淘宝、初学者可以看下 内有Mysql数据库备份的sql文用navicate 创建一个数据库名叫db_shopping 然后导入就可以运行了。不会用的私信
Extjs+struts实现文件上传 使用说明中的UploadfileAction.java中的代码要拷贝到一个JSP文件中并将url: '/rsgl/uploadfile.do',改为url: '/rsgl/jspcos.jsp',才可以正常上传
使用Spring+Struts+Hibernate技术做的简单,实用的文件上传模块,适合初学者。
基于Struts+hibernate+spring+jsp(Html5)+Mysql支持多文件上传实例,有整个SSH框架的整合,从前台上传文件到文件信息存入数据库和服务器的文件系统。
博文链接:https://zzwwyf.iteye.com/blog/231491
一个很简单的实例,jsp+struts实例。文件上传到服务器此项目的根路径。
jspstruts1_2struts2 中文件上传 java文件上传
本文主要两种方式,一:通过 FileUtils.copyFile(file, savefile);方法复制;二:通过字节流方式复制 ; web.xml struts.xml, struts.properties, UploadAction.java, index.jsp. success.jsp
(注意:每一次重新部署项目到服务器,原来上传的文件都会被清空,所以最好将文件上传到数据库中,我这里为了实现简单的上传demo,是直接上传到tomcat服务器上的) 代码是韩娜老师的,感谢老师分享。(我的代码太杂...
struts2 +jquey uploadify3 2 实现多文件上传 可以运行的myeclipse工程 绝对好用 访问方式http: 127 0 0 1:8080 Struts2Uploadify upload jsp uploadify 使用说明: <a href "javascript:$ "#file ...
struts2中的文件上传和下载: 1.首先导入commons-fileupload-1.2.1.jar和commons-io-1.4.jar两个jar包 2.其次JSP页面中的文件上传控件所在的form必须设置属性enctype="multipart/form-data" 3.再次,struts2中...
本系统使用spring+struts2+hibernate+jsp+mysql开发的高校科研资料管理系统,含前台和后台,教师和管理员角色,系统功能如下: 前台:可以登录/退出系统,查看通知公告列表和详情、科研动态列表和详情、科研成果...
java+Struts+oracle实现文档上传下载,同时变更文件名,并将文件相关信息存入数据库;另外实现pdf、office等文件 在线预览功能
JSP文件上传功能,用于实现Struts上传功能
本Java JSP项目源码是一个基于Hibernate 3、Struts 2和Spring 2构建的内容管理系统(CMS),旨在提供一个高效、可扩展且易于维护的Web应用框架,适用于各种规模的企业和团队。该项目具有以下核心功能: 1. 文章管理...