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本項目下的文件夾中,接下來我們要實現本項目上傳文件至其他項目的文件夾下,如商城後臺如何將後臺上架圖片放到前臺展示,歡迎關注


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