1. 程式人生 > >ssm專案中的檔案上傳

ssm專案中的檔案上傳

springmvc中,要想實現上傳檔案需要新增jar包

 <dependency>
          <groupId>commons-fileupload</groupId>
          <artifactId>commons-fileupload</artifactId>
          <version>1.3.2</version>
      </dependency>

需要在spring的配置檔案中新增bean,這裡的bean的id一定要使用multipartResolver,否則會報錯 ,bean中注入的內容隨意,不寫也沒關係,當然還有其他的設定項。

 <!--配置檔案上傳使用解析器-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="UTF-8"></property>
    </bean>

我們要修改上傳檔案的form的表單
第一:新增程式碼enctype="multipart/form-data"
第二:使用post方式提交表單
第三:在表單中給file檔案起name

上傳單個檔案

<form name="dateupload" method="post" enctype="multipart/form-data" action="<%=request.getContextPath()%>/gwc/edit" >
        <input type="file" name="file"  >
        <button type="button" onclick="tijiao()" >提交</button>
</form>

然後到控制器中,接收檔案的引數要新增RequestParam註解
括號中的內容是form表單中的name值

    @RequestMapping("/edit")
    public String edit(@RequestParam("file") MultipartFile pic, HttpServletRequest request) throws Exception {
        //獲取流資料,方便儲存
        FileItem fi = pic.getFileItem();
            //pic.getOriginalFilename()獲取檔名
            //上傳檔案到伺服器路徑中
        File fi=new File(request.getRealPath("/")+"/file/"+pic.getOriginalFilename());
        fi.write(file);
        System.out.println("file=====================");
        return "gouwuche/edit";
    }

好啦,現在執行頁面提交檔案就可以在你的D盤中的檔案資料夾中生成相應的檔案

上傳多個檔案

表單需要新增的內容和上面一樣,和上面專案多添加了兩個file標籤

  <form name="dateupload" method="post" enctype="multipart/form-data" action="<%=request.getContextPath()%>/gwc/edit" >
        <input type="file" name="file" onchange="xianshi(this)" >
        <input type="file" name="file" onchange="xianshi(this)" >
        <input type="file" name="file" onchange="xianshi(this)" >
        <button type="button" onclick="tijiao()" >提交</button>
    </form>

在控制器中的方法的引數需要改變以下,接收的資料型別變成了陣列,而將檔案儲存到路徑還是和原來相同。

 @RequestMapping("/edit")
    public String edit(@RequestParam("file") CommonsMultipartFile[] pic, HttpServletRequest request) throws Exception {
        for (int i=0;i<pic.length;i++){
            FileItem fi = pic[i].getFileItem();
                   File fi=new File(request.getRealPath("/")+"/file/"+pic.getOriginalFilename());
            fi.write(file);
        }
        System.out.println("file=====================");
        return "gouwuche/edit";
    }