使用smartupload組件實(shí)現(xiàn)jsp+jdbc上傳下載文件實(shí)例解析
SmartUpload組件只有5個(gè)分別是:File、Files、Request、SmartUpload、SmartUploadException類,其中,F(xiàn)ile代表用戶上傳的文件,F(xiàn)iles代表用戶上傳的多個(gè)文件,Request相當(dāng)于HttpServletRequest的功能,用于獲取表單數(shù)據(jù),SmartUpload是最核心的類,負(fù)責(zé)文件上傳下載,SmartUploadException是自定義異常。
SmartUpload的基本使用思路如下:
jsp前臺(tái)代碼表單提交
<form action="" method="post" name="form1" onSubmit="r" enctype="multipart/form-data"> <input type="file" name="img" size="34"></td> </form>
//創(chuàng)建SmartUpload的實(shí)例 SmartUpload su = new SmartUpload(); //初始化,如果是在Servlet中使用,則調(diào)用另一個(gè)重載方法:initialize(ServletConfig, HttpServletRequest, HttpServletResponse) su.initialize(pageContext); //完成上傳操作 su.upload(); //將上傳的文件保存到指定的文件夾。參數(shù)1表示文件保存的路徑,參數(shù)2是可選選項(xiàng) su.save("uploads/", SmartUpload.SAVE_VIRTUAL);
在save方法中,有三個(gè)常量:SAVEAS_PHYSICAL,SAVEAS_VIRTUAL,SAVEAS_AUTO,意義分別是:
SAVEAS_PHYSICAL表明以操作系統(tǒng)的根目錄為文件根目錄另存文件,SAVEAS_VIRTUAL表明以Web應(yīng)用程序的根目錄為文件根目錄另存文件,SAVEAS_AUTO則表示讓組件決定,當(dāng)Web應(yīng)用程序的根目錄存在另存文件的目錄時(shí),它會(huì)選擇SAVEAS_VIRTUAL,否則會(huì)選擇SAVEAS_PHYSICAL。
如果希望給文件重命名(這是經(jīng)常遇到的問(wèn)題),可以調(diào)用File類的saveAs方法保存單個(gè)的文件,代碼如下:
SmartUpload su = new SmartUpload(); su.initialize(pageContext); //指定擴(kuò)展名 su.setAllowedFilesList("bmp,jpg,bng,gif"); //指定大小 su.setMaxFileSize(1 * 1024 * 1024); su.upload(); //單獨(dú)保存文件,用UUID名稱保存 Files files = su.getFiles(); for(int i = 0; i < files.getCount(); i ++){ File f = files.getFile(i); if(!f.isMissing()){ //保存單個(gè)文件,參數(shù)1為文件名,參數(shù)2為可選選項(xiàng)。 f.saveAs("uploads/" + UUID.randomUUID().toString() + "." + f.getFileExt(), SmartUpload.SAVE_VIRTUAL); } }
使用SmartUpload實(shí)現(xiàn)文件下載就更簡(jiǎn)單了,不再直接和數(shù)據(jù)流打交道,非常貼心的設(shè)計(jì)。SmartUpload定義了一個(gè)名為downloadFile()的方法,該方法的參數(shù)指定要下載的文件即可。當(dāng)然,在此之前要先調(diào)用setContentDisposition(null),參數(shù)為null表示告知瀏覽器下載文件。代碼如下:
SmartUpload su = new SmartUpload(); su.initialize(pageContext); su.setContentDisposition(null); //表示這是一個(gè)下載操作 su.downloadFile("uploads/fa79a56a-5e64-407d-a22b-8606d512b447.jpg");
smartupload組件包下載地址:http://download.csdn.net/detail/qq_24886937/9729267
以上所述是小編給大家介紹的使用smartupload組件實(shí)現(xiàn)jsp+jdbc上傳下載文件實(shí)例解析,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
js 實(shí)現(xiàn)的可折疊留言板(附源碼下載)
留言板想必大家都有見(jiàn)過(guò)吧,但是可以折疊的卻不是很多,恰好本文提供一個(gè)比較不錯(cuò)的可折疊留言板,感興趣的朋友可以學(xué)習(xí)下2014-07-07JS實(shí)現(xiàn)添加緩動(dòng)畫(huà)的方法
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)添加緩動(dòng)畫(huà)的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07javascript實(shí)現(xiàn)手動(dòng)點(diǎn)贊效果
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)手動(dòng)點(diǎn)贊效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04js get和post請(qǐng)求實(shí)現(xiàn)代碼解析
這篇文章主要介紹了js get和post實(shí)現(xiàn)代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02JavaScript利用normalizr實(shí)現(xiàn)復(fù)雜數(shù)據(jù)轉(zhuǎn)換
當(dāng)我們需要進(jìn)行數(shù)據(jù)轉(zhuǎn)換以便拆分和維護(hù)時(shí),可以使用redux作者 Dan Abramov 編寫(xiě)的normalizr來(lái)處理數(shù)據(jù),本文將為大家詳細(xì)講講其用法,感興趣的可以了解一下2022-07-07JS判斷數(shù)組里是否有重復(fù)元素的方法小結(jié)
這篇文章主要介紹了JS判斷數(shù)組里是否有重復(fù)元素的方法,結(jié)合實(shí)例形式分析了javascript針對(duì)數(shù)組重復(fù)元素判斷相關(guān)的遍歷、排序、遞歸等相關(guān)操作技巧,需要的朋友可以參考下2019-05-05echarts 移動(dòng)端豎著顯示效果實(shí)現(xiàn)
這篇文章主要為大家介紹了echarts 移動(dòng)端豎著顯示效果實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07通過(guò)說(shuō)明與示例了解js五種設(shè)計(jì)模式
這篇文章主要介紹了通過(guò)說(shuō)明與示例了解js五種設(shè)計(jì)模式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下2019-06-06js中document.write使用過(guò)程中的一點(diǎn)疑問(wèn)解答
本文為大家介紹下為何如果在頁(yè)面加載完后如果調(diào)用document.write就會(huì)覆蓋整個(gè)文檔2014-03-03js print打印網(wǎng)頁(yè)指定區(qū)域內(nèi)容的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇js print打印網(wǎng)頁(yè)指定區(qū)域內(nèi)容的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11