1. 程式人生 > 其它 >SpringMVC檔案上傳(檔名不重複)

SpringMVC檔案上傳(檔名不重複)

1)表單項type=“file”
2)表單的提交方式是post
3)表單的enctype屬性是多部分表單形式,及enctype=“multipart/form-data”

單檔案上傳步驟
1)匯入fileupload和io座標
2)配置檔案上傳解析器
3)編寫檔案上傳程式碼

   <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.4</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>1.4</version>
    </dependency>
   <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="5242800"/>
        <!--上傳單個檔案的大小-->
        <property name="maxUploadSizePerFile" value="5242800"/>
        <!--上傳檔案的編碼型別-->
        <property name="defaultEncoding" value="UTF-8"/>
    </bean>>

編寫業務層 Controller 上傳程式碼

@RequestMapping(value = "mmm")
    @ResponseBody
    public String  say12(MultipartFile files) throws IOException {
        String filen = files.getOriginalFilename();

        File file = new File("H:\\"+filen);
        int i = 0;
        while (file.exists()){
            i++;
            file = new File("H:\\"+i+filen); //如果檔案存在名稱相同的則加字首或者加時間戳

        }
        file.createNewFile();
        InputStream ins = files.getInputStream();
        BufferedInputStream bis =new BufferedInputStream(ins);
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
        byte[] by =new byte[1024];
        int len;
        while ((len = bis.read(by)) != -1){
                bos.write(by);
        }
        bos.close();
        bis.close();
        return "Successupload!";
    }

form表單

<form action="http://localhost:8080/user/mmm" method="post" enctype="multipart/form-data">
<input type="file" name="files">
    <input type="submit" value="ssss">
</form>

上傳結果