轉帖|其它|編輯:郝浩|2011-05-12 15:06:28.000|閱讀 995 次
概述:文件上傳幾乎是每個項目實現的一個必須的模塊上傳就是將信息從個人計算機(本地計算機)傳遞到中央計算機(遠程計算機)系統上,讓網絡上的人都能看到。將制作好的網頁、文字、圖片等發布到互聯網上去,以便讓其他人瀏覽、欣賞,這一過程稱為上傳。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
文件上傳幾乎是每個項目實現的一個必須的模塊上傳就是將信息從個人計算機(本地計算機)傳遞到中央計算機(遠程計算機)系統上,讓網絡上的人都能看到。將制作好的網頁、文字、圖片等發布到互聯網上去,以便讓其他人瀏覽、欣賞,這一過程稱為上傳。
JAVA實現文件上傳的幾個組件:
1 SmartUpload 用的最多的一個組件,已經不再更新了,可以實現上傳和下載
2 FileUpload Apache實現的文件上傳組件,功能齊備
3 J2KUpload java2000實現的文件上傳組件,全部使用內存,適合多個不超過10M的小文件
下面具體說說FileUpload Apache實現的文件上傳組件。
1、/** 按copy方式上傳 */
Java代碼
public String uploadFile(){
/**保存的具體路徑*/
String savepath = getSavePath();
/**根據保存的路徑創建file對象*/
File file = new File(savepath);
if(!file.exists()){
/**創建此文件對象路徑*/
file.mkdirs();
}
try {
/**使用的是:org.apache.commons.io.FileUtils FileUtils*/
FileUtils.copyFile(pic, new File(file,getPicFileName()));
} catch (IOException e) {
e.printStackTrace();
}
return SUCCESS;
}
備注:
1、getSavePath()方法中,ServletActionContext()。getServletContext()。getRealPath
(savePath+ "\\"+getPicFileName()); ,這個主要是一個文件的實際路徑
2、我個人認為這種方式是簡單易用的。按copy方式上傳使用的是Apache公司的
org.apache.commons.io.FileUtils包里的FileUtils.java.
2、/** 按字節方式上傳 */
Java代碼
public String uploadFile(){
/** 文件的寫操作 */
FileInputStream fis = null;
FileOutputStream fos = null;
/** 保存的路徑 */
String savepath = getSavePath();
/** 根據保存的路徑創建file對象 */
File file = new File(savepath);
/** file對象是否存在
*/
if (!file.exists()) {
/** 創建此文件對象路徑 */
file.mkdirs();
}
try {
/** 創建輸入流 */
fis = new FileInputStream(pic);
/** 輸出流 更據文件的路徑+文件名稱創建文件對象 */
fos = new FileOutputStream(file + "//" + getPicFileName());
/** 讀取字節
*/
byte b[] = new byte[1024];
int n = 0;
/** 讀取操作
*/
while ((n = fis.read(b)) != -1) {
/** 寫操作
*/
fos.write(b, 0, n);
}
/** 關閉操作 */
if (fis != null) {
fis.close();
}
if (fos != null) {
fos.close();
}
} catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
}
3、/** 按字符方式上傳 即“三層管道” */
Java代碼
public String uploadFile(){
/** 文件的寫操作 */
BufferedReader br =null;
BufferedWriter bw = null;
/** 保存的路徑 */
String savepath = getSavePath();
/** 根據保存的路徑創建file對象
*/
File file = new File(savepath);
/** file對象是否存在 */
if (!file.exists()) {
/** 創建此文件對象路徑 */
file.mkdirs();
}
try {
/**
創建一個BufferedReader 對象*/
br = new BufferedReader(new InputStreamReader(new FileInputStream
(pic)));
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream
(file + "//" + getPicFileName())));
// 讀取字節
char b[] = new char[1024];
int n = 0;
// 讀取操作
while ((n = br.read(b)) != -1) {
// 寫操作
bw.write(b, 0, n);
}
// 關閉操作
if (br != null) {
br.close();
}
if (bw != null) {
bw.close();
}
} catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
}
備注:
第二種上傳方式沒有第三種上傳方式效率高。
建議:
最好用第一種方式上傳,次之使用第三種方式上傳,最后再使用第二種方式上傳。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:網絡轉載