文件上傳下載相關

1. Controllerjava

import org.springframework.web.multipart.MultipartHttpServletRequest;
    import org.springframework.web.multipart.commons.CommonsMultipartFile;

    public Result uploadController(MultipartFile file, HttpServletRequest request) throws Exception {

        /**
         * 也能夠直接經過request獲取文件
         */
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        CommonsMultipartFile file = (CommonsMultipartFile) multipartRequest.getFile("file");

        /**
         * 圖片訪問url
         * http://192.168.11.95:8080/relativePath
         */
        InetAddress address = InetAddress.getLocalHost();
        String url = request.getScheme() + "://" + address.getHostAddress() + ":" + request.getServerPort() + "/" + relativePath;

        /**
         * 獲取項目根路徑
         * D:\ideas\xxx\out\artifacts\xxx_war_exploded\
         */
        ServletContext sr = request.getSession().getServletContext();
        String path = sr.getRealPath("/") + imageConfig.getDir();
       
        return save(file.getInputStream());
    }

 

2. Serviceweb

import org.springframework.web.context.request.RequestContextHolder;
        import org.springframework.web.context.request.ServletRequestAttributes;


        /**
         * 獲取項目根路徑
         */
        HttpServletRequest request = ((ServletRequestAttributes) 
        RequestContextHolder.getRequestAttributes()).getRequest();
        String root = request.getSession().getServletContext().getRealPath("/");

        /**
         * 目錄不存在則建立
         * fileName = ...../upload/1.img
         */
        String dir = fileName.substring(0, fileName.lastIndexOf(File.separator));
        File dirFile = new File(dir);
        if (!dirFile.exists())
            dirFile.mkdirs();

        /**
         * 建立文件
         */
        File file = new File(fileName);
        if (!file.exists())
            file.createNewFile();

3. 注意點spring

  • 在service層中根據Spring提供的RequestContextHolder獲取request,以後該幹啥幹啥。
  • SpringBoot war 在 tomcat 中解壓後,根目錄是 ../webapps/項目名/
  • 實際上,應該上傳到ftp服務器,而後根據配置返回文件或圖片的http訪問路徑

    

相關文章
相關標籤/搜索