在web**中上傳檔案,一般使用form表單提交資料
首先表單必須宣告post方式提交,因為get方式提交的資料有限,一般上傳檔案都比較大
表單中也需要加入 enctype屬性,該屬性有三種取值:
如果想要使得表單有檔案上傳功能需要加enctype="multipart/form-data" 該屬性。
還需要新增檔案上傳控制項:
type:必須為file型別,顯示效果:以下操作採用火狐瀏覽器,每個瀏覽器的展示樣式不一樣
準備好以上前端設定,就可以上傳檔案了
在提交的時候就是按照post方式提交所有表單中的資料,當然檔案也是會提交,在瀏覽器端按f12可以檢視提交的引數資訊:
檔案上傳就是傳輸該檔案的二進位制資料,所以在後台把這些二進位制資料再重新組裝成乙個對應的檔案存下了,檔案就上傳成功了,
大家也看到了,這個上傳的資料很多,大部分時候上傳的時候不只是上傳檔案,還有和檔案相關的一些文字資訊,就需要我們在後台將這些資料進行解析分離。
首先,我們需要在後台將這些資料都獲取到,我們之前有request.getparamter("***");可以得到對應的值,但是form 表單加上
enctype="multipart/form-data" ,後這種方式就得不到值了。
這時我們就需要借助第三方工具了,
commons-fileupload-1.2.1.jar;
commons-io-1.4.jar;
以上兩個jar包就是檔案上傳所需要的第三方jar包,提供了非常方便的檔案解析方式,
以下**就是把前端傳來的資料全部封裝到乙個map集合中:
/**
* 對request物件進行資料封裝的方法
string extension = realname.substring(filename.lastindexof("."));//擷取檔案字尾名
string uuidname = new date().gettime()+extension;//以當前時間為檔名+字尾名
system.out.println(uuidname);
file diskfile = new file(dirfile,uuidname);//建立磁碟複製檔案
if(!diskfile.exists())
system.out.println(diskfile.getabsolutepath());
fileoutputstream os = new fileoutputstream(diskfile);//建立指向複製檔案的輸出流
ioutils.copy(in, os);//執行複製操作,該物件由以上第三方提供
ioutils.closequietly(in);//關閉輸入流
ioutils.closequietly(os);//關閉輸出流
fieldmap.put(fieldname, "products+uuidname);//把該字段加進map集合
} catch (ioexception e) }}
}catch(exception e)
return fieldmap;
}
通過以上**可以得到乙個存放了傳輸的資料的map集合,而且傳輸的檔案也已經複製到伺服器,接下來就可以操作了 JavaWeb檔案上傳
charset utf 8 insert title heretitle head action upload method post enctype multipart form data type text name username type file name file type submi...
java web 上傳檔案詳解
目錄 純servlet下使用upload外掛程式上傳檔案 測試頁面 在servlet裡 重複檔名問題 多級目錄的問題 struts2上傳檔案 spring mvc上傳檔案 上傳檔案的前台寫法 傳統的html寫法 js的寫法 前言 本篇會講解在純servlet下上傳檔案和框架下上傳檔案,以及各種上傳檔...
JavaWeb上傳頭像
最近工作中遇到需要維護個人資訊,包括頭像資訊,再次記錄,方便以後使用 前端 新增附件 js 上傳檔案 function openselectfile uploadfile fileupload autoupload true,add function e,data var size data.fil...