zoukankan      html  css  js  c++  java
  • 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>

    小结

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


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

  • 相关阅读:
    go 本地安装 grpc-go
    vscode python code-runner 中文乱码解决
    spring-cloud-sleuth 学习资源
    vscode 快键键资源整理
    vscode and python
    redis分布式锁
    TF-IDF算法解释
    spring 4.1 xml配置头部信息 maven配置信息
    google像apple 30亿美元购买流量
    spring 启动异常Failed to read candidate component class
  • 原文地址:https://www.cnblogs.com/zhoulitong/p/6412343.html
Copyright © 2011-2022 走看看