精品91麻豆免费免费国产在线_男女福利视频_国产一区二区三区小向美奈子_在教室里和同桌做校园h文

當(dāng)前位置:

java認(rèn)證考試專業(yè)語(yǔ)言串講struts2文件上傳的三種方式

發(fā)表時(shí)間:2015/4/9 13:47:22 來(lái)源:互聯(lián)網(wǎng) 點(diǎn)擊關(guān)注微信:關(guān)注中大網(wǎng)校微信
關(guān)注公眾號(hào)

詳解struts2文件上傳的三種方式

文件上傳幾乎是每個(gè)項(xiàng)目實(shí)現(xiàn)的一個(gè)必須的模塊。

上傳就是將信息從個(gè)人計(jì)算機(jī)(本地計(jì)算機(jī))傳遞到中央計(jì)算機(jī)(遠(yuǎn)程計(jì)算機(jī))系統(tǒng)上,讓網(wǎng)絡(luò)上的人都能看到。將制作好的網(wǎng)頁(yè)、文字、圖片等發(fā)布到互聯(lián)網(wǎng)上去,以便讓其他人瀏覽、欣賞。這一過(guò)程稱為上傳。

JAVA實(shí)現(xiàn)文件上傳的幾個(gè)組件:

1 SmartUpload 用的最多的一個(gè)組件,已經(jīng)不再更新了,可以實(shí)現(xiàn)上傳和下載

2 FileUpload Apache實(shí)現(xiàn)的文件上傳組件,功能齊備

3 J2KUpload java2000實(shí)現(xiàn)的文件上傳組件,全部使用內(nèi)存,適合多個(gè)不超過(guò)10M的小文件

下面具體說(shuō)說(shuō)FileUpload Apache實(shí)現(xiàn)的文件上傳組件。

1、/** 按copy方式上傳 */

Java代碼

public String uploadFile(){

/**保存的具體路徑*/

String savepath = getSavePath();

/**根據(jù)保存的路徑創(chuàng)建file對(duì)象*/

File file = new File(savepath);

if(!file.exists()){

/**創(chuàng)建此文件對(duì)象路徑*/

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()); ,這個(gè)主要是一個(gè)文件的實(shí)際路徑

2、我個(gè)人認(rèn)為這種方式是簡(jiǎn)單易用的。按copy方式上傳使用的是Apache公司的

org.apache.commons.io.FileUtils包里的FileUtils.java.

2、/** 按字節(jié)方式上傳 */

Java代碼

public String uploadFile(){

/** 文件的寫(xiě)操作 */

FileInputStream fis = null;

FileOutputStream fos = null;

/** 保存的路徑 */

String savepath = getSavePath();

/** 根據(jù)保存的路徑創(chuàng)建file對(duì)象 */

File file = new File(savepath);

/** file對(duì)象是否存在

*/

if (!file.exists()) {

/** 創(chuàng)建此文件對(duì)象路徑 */

file.mkdirs();

}

try {

/** 創(chuàng)建輸入流 */

fis = new FileInputStream(pic);

/** 輸出流 更據(jù)文件的路徑+文件名稱創(chuàng)建文件對(duì)象 */

fos = new FileOutputStream(file + "http://" + getPicFileName());

/** 讀取字節(jié)

*/

byte b[] = new byte[1024];

int n = 0;

/** 讀取操作

*/

while ((n = fis.read(b)) != -1) {

/** 寫(xiě)操作

*/

fos.write(b, 0, n);

}

/** 關(guān)閉操作 */

if (fis != null) {

fis.close();

}

if (fos != null) {

fos.close();

}

} catch (Exception e) {

e.printStackTrace();

}

return SUCCESS;

}

3、/** 按字符方式上傳 即“三層管道” */

Java代碼

public String uploadFile(){

/** 文件的寫(xiě)操作 */

BufferedReader br =null;

BufferedWriter bw = null;

/** 保存的路徑 */

String savepath = getSavePath();

/** 根據(jù)保存的路徑創(chuàng)建file對(duì)象

*/

File file = new File(savepath);

/** file對(duì)象是否存在 */

if (!file.exists()) {

/** 創(chuàng)建此文件對(duì)象路徑 */

file.mkdirs();

}

try {

/**

創(chuàng)建一個(gè)BufferedReader 對(duì)象*/

br = new BufferedReader(new InputStreamReader(new FileInputStream

(pic)));

bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream

(file + "http://" + getPicFileName())));

// 讀取字節(jié)

char b[] = new char[1024];

int n = 0;

// 讀取操作

while ((n = br.read(b)) != -1) {

// 寫(xiě)操作

bw.write(b, 0, n);

}

// 關(guān)閉操作

if (br != null) {

br.close();

}

if (bw != null) {

bw.close();

}

} catch (Exception e) {

e.printStackTrace();

}

return SUCCESS;

}

備注:

第二種上傳方式?jīng)]有第三種上傳方式效率高。

建議:

最好用第一種方式上傳,次之使用第三種方式上傳,最后再使用第二種方式上傳。

編輯推薦

java認(rèn)證考試專業(yè)語(yǔ)言串講cookie技術(shù)在J2ME平臺(tái)應(yīng)用

java認(rèn)證考試專業(yè)語(yǔ)言串講資料匯總

JAVA認(rèn)證考試報(bào)考指南 / 更多JAVA考試資料

(責(zé)任編輯:xy)

2頁(yè),當(dāng)前第1頁(yè)  第一頁(yè)  前一頁(yè)  下一頁(yè)
最近更新 考試動(dòng)態(tài) 更多>