SSH—网上商城之商品图片文件上传

前言

    网上商城中的淘宝图片要显示在页面的前提是图片应该已经在数据库里面,那么怎么实现图片的上传功能呢,这就是今天要说的主题。

内容

需求:

    商城后台需要添加图片文件,用来图片显示

解决方式:

    Struts2框架中文件上传

      *文件的条件

           *提交方式为POST(文件大小不用限制),采用GET方式提交的文件大小有限制。

           *表单上传项必须有一个name属性

           *表单的enctype属性值需要时multipart/form-data

      *前台显示:通过提交form表单提交表单数据,给form表单一个action路径

DEMO部分

  • 前台表单部分

 

<form id="userAction_save_do" name="Form1" action="${pageContext.request.contextPath}/adminProduct_save.action" method="post" enctype="multipart/form-data">
	<table>
		<tr>
			<td width="18%" align="center" bgColor="#f5fafe" class="ta_01">
				商品图片:
			</td>
			<td class="ta_01" bgColor="#ffffff" colspan="3">
				<input type="file" name="upload"/>
			</td>
		</tr>
	</table>
</form>

  • Action

 

/*
 * 说明:后台商品管理的action
 * 作者:周丽同
 */
public class AdminProductAction extends ActionSupport implements ModelDriven<Product>{
	//模型驱动使用的对象
	private Product product = new Product();
	public Product getModel(){
		return product;
	}
	//注入商品的service
	private ProductService productService;
	public void setProductService(ProductService productService) {
		this.productService = productService;
	}

	//文件上传需要的参数:
	private File upload;//上传的文件
	private String uploadFileName;//接收文件上传的文件名
	private String uploadContext;//接收文件上传的文件的MIME的类型
	
	public void setUpload(File upload) {
		this.upload = upload;
	}

	public void setUploadFileName(String uploadFileName) {
		this.uploadFileName = uploadFileName;
	}

	public void setUploadContext(String uploadContext) {
		this.uploadContext = uploadContext;
	}
	
	//保存商品的方法
	public String save() throws IOException{
		//调用service完成保存操作
		product.setPdate(new Date());
		if(upload != null){
			//获得文件上传的磁盘绝对路径:
			String realPath = ServletActionContext.getServletContext().getRealPath("/products");
			//创建一个文件:
			File diskFile = new File(realPath+"//"+uploadFileName);
			//文件上传:
			FileUtils.copyFile(upload, diskFile);
			product.setImage("products/"+uploadFileName);
		}
		//将数据保存到数据库
		productService.save(product);
		//页面跳转
		return "saveSuccess";
	}
}

  • Service

 

/*
 *说明:商品的业务层代码
 *作者:周丽同
 */
@Transactional
public class ProductService {
	//业务层保存商品的方法
	public void save(Product product) {
		// TODO Auto-generated method stub
		productDao.save(product);
	}
}

  • Dao

 

/*
 * 说明:添加商品
 * 作者:周丽同
 */
public class ProductDao extends HibernateDaoSupport {
	//DAO层保存商品的方法
	public void save(Product product) {
		// TODO Auto-generated method stub
		this.getHibernateTemplate().save(product);
	}
}

  • Struts.xml

<!-- 配置添加商品的action -->
<action name="adminProduct_*" class="adminProductAction" method="{1}">
	<result name="saveSuccess" type="redirectAction">adminProduct_findAll.action?page=1</result>			
	
	<interceptor-ref name="PrivilegeInterceptor"></interceptor-ref>
	<interceptor-ref name="defaultStack"></interceptor-ref>						
</action>

小结

    这些东西自己还得多多总结啊!


感谢您的宝贵时间······

原文地址:https://www.cnblogs.com/zhoulitong/p/6412343.html