action中实现对批量文件上传的封装

     如今,文件(尤其是图片)上传,在前后台的应用相当普遍,上传头像、共享资料等已成为最基本应用。我们很希望通过一个万能的封装方法来实现一劳永逸的效果。

    接下来,就来为大家介绍具体实现。

    首先,我们需要一个struts框架下的项目工程,在webRoot目录下新建upload文件夹,用来存放上传文件

    然后,写一个简单的jsp,实现(批量)文件上传功能,这里注意:将所有上传文件框的name属性设为file,以便action接收

    之后,编写action,在action内首先要写入如下几个变量,及其get/set方法。

        private List<File> file;
        private List<String> fileFileName;
	private List<String> fileContentType;

     各自代表的意义一目了然。

     接下来就正式编写封装方法


public String uploadImg() throws IOException {
		String str = null;
		// 得到工程保存图片的路径
		String root = ServletActionContext.getRequest().getRealPath("/upload");

		// 循环上传的文件
		for (int i = 0; i < file.size(); i++) {
			InputStream is = new FileInputStream(file.get(i));

			// 得到图片保存的位置(根据root来得到图片保存的路径在tomcat下的该工程里)
			File destFile = new File(root, this.getFileFileName().get(i));
			str = destFile.getName();
			// 把图片写入到上面设置的路径里
			OutputStream os = new FileOutputStream(destFile);
			byte[] buffer = new byte[400];
			int length = 0;
			while ((length = is.read(buffer)) > 0) {
				os.write(buffer, 0, length);
			}
			is.close();
			os.close();
		}

		return str;
	}

     OK,这个方法既实现了将文件保存到tomcat下的相应文件夹中,又将保存的文件名告诉了我们, "upload/" + uploadImg()   即是本工程下的路径。

     如果文件是某对象的一个属性,那么直接XXX.setXxx( "upload/" + uploadImg())  存于数据库


下一篇  介绍文件的转移  

           以前的文件上传只是存放于tomcat本项目下的文件夹中,接下来我们要实现本项目上传文件至其他项目的文件夹下,如商城后台如何将后台上架图片放到前台展示,欢迎关注


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章