tomcat、springmvc、IDEA實現上傳文件與項目路徑分離

一,前言

    我們在開發web項目時,大多數情況下要處理文件上傳的業務,如果將文件直接存在在項目路徑下的話,會造成很多問題,比如說,導致項目文件過大、部署更新的版本需要重新拷貝文件、文件不能再項目之間共享等,那麼我們怎麼將文件放在項目之外的位置呢?我們往下看。

二、配置Tomcat

    如果我們將項目文件部署在tomcat中,我們可以通過配置tomcat的虛擬路徑來達到上傳文件與項目路徑相分離的目的。我們以上傳圖片文件爲例。我們打開conf文件夾下面的server.xml。在<Host>標籤下面添加<Context path="/springStudy/image" docBase="G:\\tomcatupload ></Context>,這個配置表示在瀏覽器上訪問域名/springStudy/image時,實際訪問的路徑是G:\tomcatupload。筆者在這裏將項目放在了非tomcat的webapp文件夾下。可以在增加一個<Context path="/springStudy" docBase="G:\\springStudy" ></Context>。完整代碼如下所示:

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
          <!--配置上傳圖片的虛擬路徑-->
          <Context path="/springStudy/image" docBase="G:\\tomcatupload ></Context>
          <!--配置項目的虛擬路徑-->
          <Context path="/springStudy" docBase="G:\\springStudy" ></Context>
      </Host>

三、代碼實現

controller層代碼如下

@Value("#{fileUpLoader.imgPath}")
String path;
 @RequestMapping(value = "/multifiles")
    public void receivefiles(HttpServletRequest request, HttpServletResponse response, @ModelAttribute UploadFile uploadFile, BindingResult bindingResult,Model model){

        System.out.println("收到請求");
        MultipartFile multipartFile=uploadFile.getMultipartFile();
        String filename=multipartFile.getOriginalFilename();
        try{
            System.out.println(request.getServletContext().getRealPath("/image"));
            // path="G:tomcatupload"
            File file=new File(path,filename);
            if(!file.exists()){

            }
            multipartFile.transferTo(file);
        }catch (IOException e){
            e.printStackTrace();
        }

    }

配置文件:
這裏寫圖片描述
這裏寫圖片描述

spring-mvc配置:

<bean id="fileUpLoader" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="location" value="classpath:fileupload.properties"/>
    </bean>

效果如圖:
這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

四、IDEA配置

以上的方法是直接修改tomcat的配置文件,如果我們在IDEA中配置,又不想影響到tomcat的自身配置,我們可以配置一下服務器:
這裏寫圖片描述
這樣在IDEA中啓動項目就可以了。

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