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

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

单显示:



   

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

				
					
						商品图片:
					
					
						
					
				

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

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

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

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


   故在提交时,代码如下:

      

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

文件相关的三个参数

        //文件上传需要的参数
        private File upload;  //上传的文件,这里跟jsp表单中的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中配置如下:

       
                adminProduct_findAll.action?page=1
       

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



你可能感兴趣的:(SSH网上商城--Struts2框架中文件的上传)