使用smortupload上傳和下載文件

smortupload是一套上傳組件包颂碘,可以輕松實(shí)現(xiàn)上傳及下載功能邀层,可以限制上傳文件的類(lèi)型返敬,也可以輕易得到文件的后綴名。
smortupload是以jar包的形式給出的被济,再使用的時(shí)候要放到web的lib目錄下進(jìn)行配置使用救赐。由于要上傳文件,則必須對(duì)表單進(jìn)行封裝只磷,因?yàn)閭鬟f的不是普通的二進(jìn)制文件经磅。在from標(biāo)簽里要使用enctype="multipart/form-data"轉(zhuǎn)成二進(jìn)制的文件

<form action="/newbook" method="post" id="register" name="upload" enctype="multipart/form-data">

將表單提交到servlet后不能再時(shí)使用原先方法里面的請(qǐng)求和響應(yīng)對(duì)象,要初始化smortupload組件里的請(qǐng)求和響應(yīng)對(duì)象钮追,首先創(chuàng)建smortupload對(duì)象

//        創(chuàng)建smortupload對(duì)象
        SmartUpload su = new SmartUpload();

//        初始化請(qǐng)求和響應(yīng)對(duì)象
        su.initialize(this.getServletConfig(),req,resp);
//       創(chuàng)建一個(gè)新的請(qǐng)求對(duì)象
        Request req1 = su.getRequest();

通過(guò)smortupload組件中的upload上傳

//        上傳過(guò)程
        try {
            su.upload();
        } catch (SmartUploadException e) {
            e.printStackTrace();
        }

獲取到上傳的文件對(duì)象(注意這個(gè)對(duì)象所在的包)

Files fs  = su.getFiles();
//        獲取第一個(gè)文件
        File f = fs.getFile(0);
//        獲取文件名稱(chēng)
        String fname = f.getFileName();

把上傳的文件保存到指定的位置预厌,這里的路徑推薦是使用相對(duì)路徑

        try {
            su.save("D:/Java/BookShop/web/img/bookpicture");
        } catch (SmartUploadException e) {
            e.printStackTrace();
        }

使用上面新創(chuàng)建的請(qǐng)求對(duì)象獲取到表單里面的參數(shù)

String bookname = req1.getParameter("bookname");

注意這里拿到的是一個(gè)二進(jìn)制的數(shù)據(jù),所以我們?cè)诖嫒霐?shù)據(jù)庫(kù)之前要進(jìn)行轉(zhuǎn)碼元媚,使用utf-8的編碼格式

String bookname1 = new String(bookname.getBytes(),"utf-8");

然后連接數(shù)據(jù)庫(kù)就可以了轧叽。
文件的下載

// 獲取需要下載的文件名
        String filename = req.getParameter("filename");
        // 得到文件地址
        String url = "/uploadfile/"+filename;
        // 將響應(yīng)的內(nèi)容設(shè)置為通用的二進(jìn)制流
        resp.setContentType("application/octet-stream");
        // attachment 告訴瀏覽器以附件的方式下載文件(彈出下載框)
        filename = URLEncoder.encode(filename,"utf-8");
        resp.addHeader("Content-Disposition","attachment;filename="+filename);

        // 發(fā)送
        req.getRequestDispatcher(url).forward(req,resp);

        // 清空緩存區(qū):將服務(wù)端緩存區(qū)的文件內(nèi)容苗沧,立即傳送給客戶(hù)端
        resp.flushBuffer();

到此smortupload的上傳和下載結(jié)束。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末炭晒,一起剝皮案震驚了整個(gè)濱河市待逞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌网严,老刑警劉巖识樱,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異震束,居然都是意外死亡怜庸,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)垢村,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)割疾,“玉大人,你說(shuō)我怎么就攤上這事嘉栓『觊牛” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵胸懈,是天一觀的道長(zhǎng)担扑。 經(jīng)常有香客問(wèn)我恰响,道長(zhǎng)趣钱,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任胚宦,我火速辦了婚禮首有,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘枢劝。我一直安慰自己井联,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布您旁。 她就那樣靜靜地躺著烙常,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鹤盒。 梳的紋絲不亂的頭發(fā)上蚕脏,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音侦锯,去河邊找鬼驼鞭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛尺碰,可吹牛的內(nèi)容都是我干的挣棕。 我是一名探鬼主播译隘,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼洛心!你這毒婦竟也來(lái)了固耘?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤词身,失蹤者是張志新(化名)和其女友劉穎玻驻,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體偿枕,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡璧瞬,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了渐夸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嗤锉。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖墓塌,靈堂內(nèi)的尸體忽然破棺而出瘟忱,到底是詐尸還是另有隱情,我是刑警寧澤苫幢,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布访诱,位于F島的核電站,受9級(jí)特大地震影響韩肝,放射性物質(zhì)發(fā)生泄漏触菜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一哀峻、第九天 我趴在偏房一處隱蔽的房頂上張望涡相。 院中可真熱鬧,春花似錦剩蟀、人聲如沸催蝗。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)丙号。三九已至,卻和暖如春缰冤,著一層夾襖步出監(jiān)牢的瞬間犬缨,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工锋谐, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留遍尺,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓涮拗,卻偏偏與公主長(zhǎng)得像乾戏,于是被迫代替她去往敵國(guó)和親迂苛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容