SSH网上商城--Struts2框架中文件的上传

   在网上商城项目中,需要在后台添加商品,并上传图片,是利用Struts2框架来完成的文件上传,先看一下页面的表

单显示:



   

   jsp代码如下,其中type为文件类型,文件名为upload

				<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>

   Struts2框架实现文件上传时,文件需满足三个条件:

                1.表单提交的方式需要是POST

                2.表单中上传项必须有一个

                3.表单中的enctype属性值需要是multipart/form-data


   故在提交时,代码如下:

      <form id="userAction_save_do" name="Form1" action="${pageContext.request.contextPath}/adminProduct_save.action" method="post" enctype="multipart/form-data">

   接下来就是常规的 *.jsp----->Action----->Service----->Dao 一系列基本操作了。应该注意的是在action中需要接受

文件相关的三个参数

        //文件上传需要的参数
        private File upload;  //上传的文件,这里跟jsp<imput type="file" name="upload">表单中的name一致
        private String uploadFileName;//接收文件上传的文件名
        private String uploadContentType;//接收文件上传的文件的MIME的类型

        public void setUpload(File upload) {
	          this.upload = upload;
        } 
        public void setUploadFileName(String uploadFileName) {
	          this.uploadFileName = uploadFileName;
        }
        public void setUploadContentType(String uploadContentType) {
	          this.uploadContentType = uploadContentType;
        }
   

   最后实现文件的上传:


   首先获得磁盘绝对路径,在javaweb中有介绍文件名重名,目录的分离等问题。暂时还没研究,后期学习。现在获

得路径是WebRoot下的products的路径,为磁盘绝对路径。获得路径后需创建文件(路径+文件名),再实现文件的

上传,使用工具类FileUtils.copyFile(upload,diskFile),源文件是upload,copy到服务器的路径realPath就可以了。在

加上图片的路径即可。最后将数据保存到数据库中完成文件上传整个操作。核心代码如下:

	// 保存商品的方法:
	public String save() throws IOException {
		// 将提交的数据添加到数据库中.
		product.setPdate(new Date());
		// product.setImage(image);
		if(upload != null){
			// 将商品图片上传到服务器上.
			// 获得上传图片的服务器端路径.
			String path = ServletActionContext.getServletContext().getRealPath(
					"/products");
			// 创建文件类型对象:
			File diskFile = new File(path + "//" + uploadFileName);
			// 文件上传:
			FileUtils.copyFile(upload, diskFile);
	
			product.setImage("products/" + uploadFileName);
		}
		productService.save(product);//调用Service完成保存的操作,并将数据保存到数据库
		return "saveSuccess";
	}

   写好后在Struts.xml中配置如下:

       <action>
                <result name="saveSuccess" type="redirectAction">adminProduct_findAll.action?page=1</result>
       </action>

   整个文件的上传就完美实现了!



评论 62
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值