一、 文件上傳
- 利用commons-fileupload-1.2.1.jar實現簡單的上傳文件,首先在頁面上填寫表單,記得加上enctype="multipart/form-data",主要是確保上傳文件的正確編碼,設置表單的MIME編碼,讓form中的input值以2進制傳過去,這樣就能用於上傳文件了。
2. 配置struts.xml,完成fileUpload與action實例映射, 這裏以上傳一個圖片文件爲例
<action name="fileUpload" class="action.UploadAction" method="upload">
<interceptor-ref name="fileUpload"> //設置fileUpload過濾器
<param name="allowedTypes">image/pjpeg,image/jpg,image/jpeg,image/bmp,
image/gif,image/png</param> //設置允許上傳的文件類型
<param name="maximumSize">2097152</param> //上傳文件的最大Size
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref> //繼承默認的攔截器
<param name="savePath">/upload/file</param> //設置上傳的文件保存路徑
<result>/upload/success.jsp</result> //成功後的跳轉頁面
<result name="input">/upload/upload.jsp</result> //內部失敗返回INPUT
</action>
設置完後在webRoot下創建路徑/upload/file,然後配置Tomcat生成文件夾,用來存放上傳文件。
3. 然後寫對應UploadAction
public class UploadAction extends ActionSupport {
private File pic; //這裏的pic可以自己取名XXX
private String picContentType; //這裏命名格式必須爲XXXContentType與前面的文件命名一致
private String picFileName; //XXXFileName也許一致
private String nickName;
private String savePath; //獲取參數savePath
public String upload(){
System.out.println("contentType:"+picContentType);
System.out.println("filename:"+picFileName);
System.out.println("nickName:"+nickName);
System.out.println("savePath:"+savePath);
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream(pic)); //獲取文件的輸入流
ServletContext application = ServletActionContext.getServletContext();
//getRealPath 獲取文件輸出相對路徑在硬盤上的實際路徑平在後面加上傳進來的文件名,這樣才能成功上傳
bos = new BufferedOutputStream(new FileOutputStream(application.getRealPath(
savePath)+"/"+picFileName));
int r = 0;
while((r=bis.read())!=-1){
bos.write(r);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(bis!=null){
bis.close();
}
if(bos!=null){
bos.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return SUCCESS;
}
另外最後不要忘記加上setter/getter方法。
4.最後再完成上傳成功後的顯示頁面 success.jsp
現在可以啓動Tomcat服務器測試了,進入upload.jsp後上傳了桌面上的一張圖片,
上傳成功!
二、 多個文件上傳
多個文件上傳主要是在action中用數組接住,然後迭代輸出就行,基本上步驟一樣。
先寫上傳頁面,這裏上傳2張圖片。
<action name="filesUpload" class="action.UploadsAction" method="upload">
<interceptor-ref name="fileUpload">
<param name="allowedTypes">
image/pjpeg,image/jpg,image/jpeg,image/bmp,image/gif,image/png</param>
<param name="maximumSize">4097152</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
<param name="savePath">/upload/file</param>
<result>/upload/success2.jsp</result>
<result name="input">/upload/upload2.jsp</result></action>
接着進行Struts.xml配置。
這裏action 上傳文時用數組接住就行。
最後迭代文件名,顯示圖片。
****記錄下今天的學習內容,如果有什麼講的不清楚的地方歡迎補充