如今,文件(尤其是圖片)上傳,在前後臺的應用相當普遍,上傳頭像、共享資料等已成爲最基本應用。我們很希望通過一個萬能的封裝方法來實現一勞永逸的效果。
接下來,就來爲大家介紹具體實現。
首先,我們需要一個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本項目下的文件夾中,接下來我們要實現本項目上傳文件至其他項目的文件夾下,如商城後臺如何將後臺上架圖片放到前臺展示,歡迎關注