tomcat配置虛擬路徑上傳文件、圖片


一、tomcat配置

1、在tomcat安裝目錄下找到conf目錄(tomcat/conf/service.xml),修改service.xml文件:

path:虛擬路徑,以 / 開頭;

docBase:磁盤路徑(絕對路徑),Windows環境以盤符(D:/template)開始,linux環境如下;

reloadable:為 true 時 當web.xml或者class有改動的時候都會自動重新加載不需要從新啟動服務;

<Context path="/template" docBase="/home/template" reloadable="true" />

 

注:增加的配置需放在<Host></Host>標簽內;

建議docBase的路徑不要和tomcat放在一起,首先因為配置虛擬路徑就是想做資源服務器,將資源獨立出來,放到項目或tomcat中就和將資源放到項目中一樣,其次會增加tomcat的負載;

2、上傳

上傳資源時需要將資源上傳到docBase(絕對路徑)路徑下

   @RequestMapping(value = "uploadImg", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ResponseBody
    public Object uploadImg(MultipartFile file, HttpSession session, HttpServletRequest request) {
        SessionContainer s = (SessionContainer) session.getAttribute("sc");
        ResultVo resultVo = new ResultVo();
        resultVo.setCode(ResultEnum.ERROR.getCode());
//        String call_path = Global.getProperty("VOUCHER_IMAGE_URL");
        String call_path = "/template";
//        String path = Global.getProperty("VOUCHER_IMAGE_DIR");
        String path = "/home/template/";
        try {
            String fileName = file.getOriginalFilename();
            String date = com.ronglian.bms.commons.utils.DateUtil.getDate("yyyyMMdd");
            String rand = RandomUtil.randomNumbers(3);
            String merchNo = s.getMerchNo();
            if (StringUtils.isBlank(merchNo)) {
                merchNo = Constants.ROOT_ORG_CODE;
            }
            String lastStr = fileName.substring(fileName.lastIndexOf("."));
            path = path + merchNo + "/";
            fileName = date + rand + lastStr;
            File dir = new File(path, fileName);
            if (!dir.exists()) {
                dir.mkdirs();
            }
            dir.setWritable(true, false);
            file.transferTo(dir);
            // 圖片物理路徑
            String phy_path = dir.getPath();
            // 圖片訪問路徑
            String filePath = call_path + "/" + merchNo + "/" + fileName;
            logger.info("圖片真實路徑:" + phy_path);
            logger.info("上傳成功,模板路徑:" + filePath);
            resultVo.setCode(ResultEnum.SUCCESS.getCode());
            resultVo.setMsg(filePath);
        } catch (IOException e) {
            logger.error("上傳出錯,原因:", e);
        }
        return resultVo;
    }

filePath:圖片回顯路徑需要用虛擬路徑,如:http://ip:port/template/圖片.jpg

3、保存及回顯

將圖片路徑保存到數據庫,可保存兩個,一個圖片真實的物理路徑,一個為圖片的虛擬路徑,或只存圖片虛擬路徑即可;

注:tomcat配置的虛擬路徑中沒有配置項目名稱,一般項目的資源訪問都有項目名,此時需要將項目名稱去掉,或者再tomcat中配置虛擬路徑時將項目名稱配置進去即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM