MultipartFile中transferTo(File file)的路徑問題

今天看到layui的文件上傳的控件,就嘗試了一下。簡單創建了一個SpringMVC項目。記得在配置文件中注入以下Bean。

<!-- 定義文件上傳解析器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- 設定默認編碼 -->
    <property name="defaultEncoding" value="UTF-8"></property>
    <!-- 設定文件上傳的最大值爲5MB,5*1024*1024 -->
    <property name="maxUploadSize" value="5242880"></property>
    <!-- 設定文件上傳時寫入內存的最大值,如果小於這個參數不會生成臨時文件,默認爲10240 -->
    <property name="maxInMemorySize" value="40960"></property>
    <!-- 上傳文件的臨時路徑 -->
    <property name="uploadTempDir" value="fileUpload/temp"></property>
    <!-- 延遲文件解析 -->
    <property name="resolveLazily" value="true"/>
</bean>

 

我很懶,這些屬性都沒有配置,就註冊了Bean。
接下來是我出錯的地方。先上Controller代碼,前臺通過Layui的文件上傳模塊上傳文件。

@ResponseBody
    @RequestMapping("/upload")
    public Map upload(HttpServletRequest request,MultipartFile file){
        HashMap<String,String> map=new HashMap();
        if (!file.isEmpty()) {
            try {
                // getOriginalFilename()是包含源文件後綴的全名
                String filePath = "D:/upload/test/"+file.getOriginalFilename();
                System.out.println(filePath);
                File saveDir = new File(filePath);
                if (!saveDir.getParentFile().exists())
                    saveDir.getParentFile().mkdirs();
                file.transferTo(saveDir);
                map.put("res","上傳成功");
                return map;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        map.put("res","上傳失敗");
        return map;
    }

 

transferTo方法中傳遞的file如果是路徑的話,那麼它會將最後一層路徑當做文件名,沒有後綴的那種。此時重命名這個文件,更改成和上傳文件一致的後綴那麼就可以打開了。
比如我將

 String filePath = "D:/upload/test/"+file.getOriginalFilename();

    1

改成

String filePath = "D:/upload/test";

    1

運行之後打開文件發現這樣的:
在這裏插入圖片描述
transferTo將我想作爲文件夾的test當做文件名了。我加個後綴.jpg
在這裏插入圖片描述
和上傳的文件一致。

最後個人理解爲傳入的File參數是應該包含文件而不是文件路徑,transferTo()並不會將文件轉存到文件夾下。
————————————————
版權聲明:本文爲CSDN博主「cliche_tune」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/cliche_tune/article/details/102901241

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章