中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java怎么實現整合文件上傳到FastDFS

發布時間:2022-02-28 09:18:56 來源:億速云 閱讀:215 作者:小新 欄目:開發技術

這篇文章主要介紹Java怎么實現整合文件上傳到FastDFS,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

    1.引入fastdfs依賴到pom.xml

            <dependency>
                <groupId>com.github.tobato</groupId>
                <artifactId>fastdfs-client</artifactId>
                <version>1.26.5</version>
            </dependency>

    2.上傳代碼如下

    上傳純文件流

        /**
         * 文件上傳
         * @param file MultipartFile類型
         * @return url
         */
        @Override
        public String fileUpload(MultipartFile file) throws Exception {
            try {
                return upload(file);
            } catch (Exception e) {
                e.printStackTrace();
            }
            throw new Exception();
        }

    上傳網絡資源鏈接:

        /**
         * 文件上傳
         * @param urlStr url地址
         * @return url
         */
        @Override
        public String fileUpload(String urlStr) throws Exception {
            try {
                //把地址轉換成URL對象
                URL url = new URL(urlStr);
                //創建http鏈接
                HttpURLConnection conn = (HttpURLConnection)url.openConnection();
                //設置超時間為3秒
                conn.setConnectTimeout(3*1000);
                //防止屏蔽程序抓取而返回403錯誤
                conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36)");
                //得到輸入流
                InputStream inputStream = conn.getInputStream();
                //截取鏈接中的文件名
                String fileName= urlStr.substring(urlStr.lastIndexOf("/")+1);
                MultipartFile multipartFile = new MockMultipartFile(fileName,fileName, ContentType.APPLICATION_OCTET_STREAM.toString(), inputStream);
                //返回結果集
                return upload(multipartFile);
            } catch (Exception e) {
                e.printStackTrace();
            }
            throw new Exception();
     
        }

    整體代碼如下:

    package com.tfjybj.arpro.crawl.service.impl;
     
    import com.github.tobato.fastdfs.domain.fdfs.StorePath;
    import com.github.tobato.fastdfs.service.FastFileStorageClient;
    import com.tfjybj.arpro.crawl.service.FileUploadService;
    import com.tfjybj.arpro.crawl.util.CommonConfigurationUtil;
    import lombok.extern.slf4j.Slf4j;
    import org.apache.commons.lang3.StringUtils;
    import org.apache.http.entity.ContentType;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.mock.web.MockMultipartFile;
    import org.springframework.stereotype.Service;
    import org.springframework.web.multipart.MultipartFile;
     
    import java.io.*;
    import java.net.HttpURLConnection;
    import java.net.URL;
     
    /**
     * 文件上傳業務類
     *
     * @author Promsing(張有博)
     * @version 1.0.0
     * @since 2022/2/25 - 20:01
     */
    @Service
    @Slf4j
    public class FileUploadServiceImpl implements FileUploadService {
     
        @Autowired
        private FastFileStorageClient fastFileStorageClient;
     
     
        // 獲取配置文件中的配置IP地址
        @Value("${fdfs.realIp}")
        private String realIp;
        // 獲取配置文件中的配置分組
        @Value("${fdfs.groupName}")
        private String group;
     
     
     
        /**
         * 文件上傳
         * @param file MultipartFile類型
         * @return url
         */
        @Override
        public String fileUpload(MultipartFile file) throws Exception {
            try {
                return upload(file);
            } catch (Exception e) {
                e.printStackTrace();
            }
            throw new Exception();
        }
     
        /**
         * 文件上傳
         * @param urlStr url地址
         * @return url
         */
        @Override
        public String fileUpload(String urlStr) throws Exception {
            try {
                //把地址轉換成URL對象
                URL url = new URL(urlStr);
                //創建http鏈接
                HttpURLConnection conn = (HttpURLConnection)url.openConnection();
                //設置超時間為3秒
                conn.setConnectTimeout(3*1000);
                //防止屏蔽程序抓取而返回403錯誤
                conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36)");
                //得到輸入流
                InputStream inputStream = conn.getInputStream();
                //截取鏈接中的文件名
                String fileName= urlStr.substring(urlStr.lastIndexOf("/")+1);
                MultipartFile multipartFile = new MockMultipartFile(fileName,fileName, ContentType.APPLICATION_OCTET_STREAM.toString(), inputStream);
                //返回結果集
                return upload(multipartFile);
            } catch (Exception e) {
                e.printStackTrace();
            }
            throw new Exception();
     
        }
     
        /**
         * 文件上傳
         * @param file 需要上傳的文件
         * @return 上傳后的文件地址
         */
        public String upload(MultipartFile file) {
            try {
                // 1.文件信息校驗
                if (file.isEmpty()) {
                    log.debug("需要上傳的文件信息不通過");
                    return null;
                }
                // 2.保存圖片到fastDFS服務器
                //2.1 獲取文件后綴名
                String extension = StringUtils.substringAfterLast(file.getOriginalFilename(), ".");
                //2.2 保存
                StorePath storePath = fastFileStorageClient.uploadFile(group, file.getInputStream(), file.getSize(), extension);
                // 獲取附件的完整地址
                String Path = CommonConfigurationUtil.HTTP + CommonConfigurationUtil.ECOLON + CommonConfigurationUtil.DOUBLE_SLASH + realIp + CommonConfigurationUtil.SINGLE_SLASH + storePath.getFullPath();
                log.info("文件上傳成功,文件地址:" + Path);
                return Path;
            } catch (Exception ex) {
                ex.printStackTrace();
                return null;
            }
        }
     
    }

    3.配置文件如下

    # 文件服務器基礎配置
    fdfs:
      groupName: ar
      so-timeout: 1500
      connect-timeout: 600
      tracker-list: d-fastdfs.xxxx.com:22122
      replace-ip:
        source: d-fastdfs.xxxx.com
        dest: d-fastdfs.xxxx.com
      realIp: d-fastdfs.xxxx.com

    4.上傳效果如下

    Java怎么實現整合文件上傳到FastDFS

    無論是純文件上傳還是以網絡資源鏈接的形式上傳都是文件流上傳的形式。

    以上是“Java怎么實現整合文件上傳到FastDFS”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    星子县| 岳普湖县| 卢氏县| 喀什市| 永年县| 滦平县| 定襄县| 静乐县| 怀来县| 平塘县| 华容县| 金山区| 冀州市| 临沧市| 乌审旗| 镇原县| 衡东县| 拜城县| 溧阳市| 靖西县| 邢台县| 海宁市| 武威市| 逊克县| 平江县| 卫辉市| 宁都县| 嘉祥县| 思南县| 嘉鱼县| 淮南市| 新乡县| 通许县| 昌黎县| 郁南县| 浏阳市| 拜泉县| 都安| 沈丘县| 东城区| 巴青县|