SSM框架實(shí)現(xiàn)文件的上傳與回顯(圖片為例)

1、maven工程導(dǎo)入相關(guān)依賴(不是的話下載對(duì)應(yīng)jar包即可)

 <!--上傳文件所需依賴-->
  <dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3</version>
  </dependency>
  <dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.2</version>
  </dependency>

2芥备、到spring-mvc添加相關(guān)上傳配置

 <!--文件上傳配置-->
    <bean id="multipartResolver"
          class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 上傳文件大小上限冬耿,單位為字節(jié)(10MB) -->
        <property name="maxUploadSize">
            <value>10485760</value>
        </property>
        <!-- 請(qǐng)求的編碼格式,必須和jSP的pageEncoding屬性一致萌壳,以便正確讀取表單的內(nèi)容亦镶,默認(rèn)為ISO-8859-1 -->
        <property name="defaultEncoding">
            <value>UTF-8</value>
        </property>
    </bean>

3、去前端寫一個(gè)上傳樣式
表單路徑設(shè)置為相應(yīng)訪問路徑袱瓮,并帶上?sid=${session.sid}"缤骨,方便把文件名查到對(duì)應(yīng)的數(shù)據(jù)上(插入sid標(biāo)識(shí)的數(shù)據(jù))

<form method="post" enctype="multipart/form-data" action="${pageContext.request.contextPath}/student/updateResume?sid=${session.sid}">
            <div class="form-group">
            </br></br>
                <div class="col-sm-6">
                    <div class="input-group">
                        <input id='location' class="form-control" placeholder="請(qǐng)選擇簡(jiǎn)歷文件" onclick="$('#i-file').click();">
                        <label class="input-group-btn">
                            <input type="button" id="i-check" value="瀏覽文件" class="btn btn-primary" onclick="$('#i-file').click();">
                        </label>
                    </div>
                </div>
                <input type="file" name="resume" id='i-file'  accept=".xls, .xlsx" onchange="$('#location').val($('#i-file').val());" style="display: none">
                &nbsp;&nbsp;&nbsp; <input type="submit" class="btn btn-primary" value="上傳"/>
            </div>
            </form>

4、到controller層完善對(duì)應(yīng)處理尺借,并返回個(gè)對(duì)象绊起,方便后續(xù)頁面調(diào)用其屬性

@RequestMapping("/updateResume")
/*@RequestParam(value = "resume",required = false) MultipartFile file中的value值是前面上傳文件框中的name屬性值*/
public String updateResume(Model model,@RequestParam(value = "resume",required = false) MultipartFile file,int sid,HttpSession session) throws IOException {
    System.err.println(sid);
    //圖片上傳成功后,將圖片的地址寫到數(shù)據(jù)庫
    //設(shè)置上傳文件保存地址
    String dirPath = "D:\\upload";//保存圖片的本地路徑,必須放在項(xiàng)目文件夾外面燎斩,否則訪問不到
    /*這個(gè)配置完要想訪問到虱歪,還需去tomcat里設(shè)置簡(jiǎn)單訪問路徑,打開edit哪個(gè)然后再deployment
    里加一個(gè)路徑栅表,右邊Application context是設(shè)置簡(jiǎn)寫笋鄙,即訪問這個(gè)就是訪問左邊的完整路徑*/
    File filePath = new File(dirPath);
    // 如果保存文件的地址不存在,就先創(chuàng)建目錄
    if (!filePath.exists()) {
        filePath.mkdirs();
    }
    //獲取原始文件的拓展名
    String originalFilename = file.getOriginalFilename();
    //新的文件名字怪瓶,使用uuid隨機(jī)生成數(shù)+原始圖片名字局装,這樣不會(huì)重復(fù)
    String newFileName = UUID.randomUUID() + originalFilename;
    System.err.println(newFileName);
    //封裝上傳文件位置的全路徑,就是硬盤路徑+文件名
    File targetFile = new File(filePath, newFileName);
    //把本地文件上傳到已經(jīng)封裝好的文件位置的全路徑就是上面的targetFile
    file.transferTo(targetFile);
    System.err.println("開始調(diào)用");
    Student student = studentService.saveResume(sid, newFileName);
    if (student != null) {
        /*把它放session里*/
        session.setAttribute("session", student);
        System.err.println(student);
        /*送去前端輸出*/
        model.addAttribute("student", student);
        return "editResume";
        }
    return "fail";
    }

5劳殖、對(duì)應(yīng)service層處理代碼

接口:

Student saveResume(int sid,String newFileName);

實(shí)現(xiàn)類

@Override
    public Student saveResume(int sid, String newFileName) {
        System.err.println(newFileName);
        studentDao.saveResume(sid,newFileName);
        /*存完我要找出這個(gè)保存的student對(duì)象傳回去*/
        Student student=studentDao.findById(sid);
        return student;
    }

6铐尚、dao層處理代碼

接口:

 public void saveResume(@Param("sid")int sid, @Param("newFileName")String newFileName);

 Student findById(int sid);

xml文件:

<update id="saveResume">
        update ssmbuild.student
        set resume = #{newFileName}
        where sid = #{sid}
</update>

<select id="findById" resultType="Student" >
        SELECT * from ssmbuild.student where sid=#{sid}
 </select>

7、在回顯頁面中通過如下的代碼訪問

<img id="img"   width="100%" height="100%" />
var url = "/upload/${student.resume}";
    document.getElementById("img").src = url

8哆姻、可在tomcat里設(shè)置訪問路徑如圖所示宣增,方便回顯。其中紅框?yàn)楸镜氐木唧w路徑矛缨, Application context設(shè)置為/upload爹脾,以后在項(xiàng)目中就可以直接/upload訪問到你的保存目錄了

image.png

本例數(shù)據(jù)庫設(shè)置如下


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末帖旨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子灵妨,更是在濱河造成了極大的恐慌解阅,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泌霍,死亡現(xiàn)場(chǎng)離奇詭異货抄,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)朱转,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門蟹地,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人藤为,你說我怎么就攤上這事怪与。” “怎么了缅疟?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵分别,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我存淫,道長(zhǎng)茎杂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任纫雁,我火速辦了婚禮煌往,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘轧邪。我一直安慰自己刽脖,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布忌愚。 她就那樣靜靜地躺著曲管,像睡著了一般。 火紅的嫁衣襯著肌膚如雪硕糊。 梳的紋絲不亂的頭發(fā)上院水,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音简十,去河邊找鬼檬某。 笑死,一個(gè)胖子當(dāng)著我的面吹牛螟蝙,可吹牛的內(nèi)容都是我干的恢恼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼胰默,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼场斑!你這毒婦竟也來了漓踢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤漏隐,失蹤者是張志新(化名)和其女友劉穎喧半,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體青责,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挺据,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了爽柒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吴菠。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡者填,死狀恐怖浩村,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情占哟,我是刑警寧澤心墅,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站榨乎,受9級(jí)特大地震影響怎燥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蜜暑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一铐姚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肛捍,春花似錦隐绵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至缀蹄,卻和暖如春峭跳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背缺前。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工蛀醉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人衅码。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓滞欠,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親肆良。 傳聞我的和親對(duì)象是個(gè)殘疾皇子筛璧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

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