国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

分布式文件系統(tǒng) SpringBoot+FastDFS+Vue.js【四】

這篇具有很好參考價(jià)值的文章主要介紹了分布式文件系統(tǒng) SpringBoot+FastDFS+Vue.js【四】。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

八、文件的下載和刪除功能

8.1.FastDFSClient.java

@Slf4j
public class FastDFSClient {

    static {
        //加載fastDFS客戶端的配置文件
        try {
            ClientGlobal.initByProperties("config/fastdfs-client.properties");
            log.info("network_timeout = {} ms", ClientGlobal.g_network_timeout);
            log.info("charset= {}", ClientGlobal.g_charset);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (MyException e) {
            e.printStackTrace();
        }
    }

    /**
     * 上傳文件
     *
     * @param file
     * @param fastDFSFile
     * @return
     * @throws IOException
     */
    public static FastDfsFile upload(MultipartFile file, FastDfsFile fastDFSFile) throws IOException {
        byte[] file_buff = null;
        //把文件轉(zhuǎn)成輸入流
        InputStream inputStream = file.getInputStream();
        if (inputStream != null) {
            //獲取輸入流中可讀取的數(shù)據(jù)大小
            int len = inputStream.available();
            //創(chuàng)建足夠大的緩沖區(qū)
            file_buff = new byte[len];
            //一次性把輸入流中的數(shù)據(jù)全都讀入到緩沖區(qū)file_buff,那file_buff就要足夠大,占用內(nèi)存也會(huì)很大
            inputStream.read(file_buff);
        }
        //關(guān)閉輸入流
        inputStream.close();

        //通過fastDSF的client代碼訪問tracker和storage
        try {
            //創(chuàng)建tracker的客戶端
            TrackerClient trackerClient = new TrackerClient(ClientGlobal.getG_tracker_group());
            //通過TrackerClient對象獲取TrackerServer信息
            TrackerServer trackerServer = trackerClient.getTrackerServer();
            StorageServer storageServer = null;

            //定義storage的客戶端,建立與Storage服務(wù)器的連接
            StorageClient1 storageClient = new StorageClient1(trackerServer, storageServer);

            //文件元信息
            NameValuePair[] metaList = new NameValuePair[1];
            metaList[0] = new NameValuePair("fileName", fastDFSFile.getFileName());

            //執(zhí)行上傳
            String fileId = storageClient.upload_file1(file_buff, fastDFSFile.getExt(), metaList);
            log.info("upload success. file id is: {}", fileId);
            fastDFSFile.setFileId(fileId);
            fastDFSFile.setFilePath(fileId);
            fastDFSFile.setFileSize(file.getSize());
            fastDFSFile.setCreateTime(LocalDateTime.now());
            fastDFSFile.setUpdateTime(LocalDateTime.now());
            //通過調(diào)用service及dao將文件的路徑存儲(chǔ)到數(shù)據(jù)庫中

            //關(guān)閉storage客戶端
            storageClient.close();
            return fastDFSFile;
        } catch (Exception e) {
            log.error("上傳文件失敗:", e);
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 刪除文件
     *
     * @param file_id
     * @return
     * @throws IOException
     * @throws MyException
     */
    public static Boolean delete(String file_id) throws IOException, MyException {
        //通過fastDSF的client代碼訪問tracker和storage
        //創(chuàng)建tracker的客戶端
        TrackerClient trackerClient = new TrackerClient(ClientGlobal.getG_tracker_group());
        //通過TrackerClient對象獲取TrackerServer信息
        TrackerServer trackerServer = trackerClient.getTrackerServer();
        StorageServer storageServer = null;

        //定義storage的客戶端,建立與Storage服務(wù)器的連接
        StorageClient1 storageClient = new StorageClient1(trackerServer, storageServer);

        //查詢文件
        //upload success. file id is: group1/M00/00/00/wKjljWXHAauARHa2AAWwwNOt0hY257.png
        String[] splitStr = file_id.split("/");
        String group_name = splitStr[0];//group1
        String remoteFileName = "";//M00/00/00/wKjljWXHAauARHa2AAWwwNOt0hY257.png
        for (int i = 1; i < splitStr.length; i++) {
            remoteFileName += splitStr[i];
            if (i != splitStr.length - 1) {
                remoteFileName += "/";
            }
        }
        log.info("group_name : {}", group_name);
        log.info("remoteFileName : {}", remoteFileName);
        FileInfo fileInfo = storageClient.query_file_info(group_name, remoteFileName);
        log.info("fileInfo = {}", fileInfo);

        if (fileInfo == null) {
            log.info("您刪除的文件信息不存在,請核對后再次刪除......");
            return false;
        }

        storageClient.delete_file1(file_id);
        log.info("刪除成功");

        //關(guān)閉storage客戶端
        storageClient.close();
        return true;
    }

    /**
     * 下載文件
     *
     * @param file_id
     * @throws IOException
     * @throws MyException
     */
    public static byte[] downloadFastFile(String file_id) throws IOException, MyException {
        //通過fastDSF的client代碼訪問tracker和storage
        //創(chuàng)建tracker的客戶端
        TrackerClient trackerClient = new TrackerClient(ClientGlobal.getG_tracker_group());
        //通過TrackerClient對象獲取TrackerServer信息
        TrackerServer trackerServer = trackerClient.getTrackerServer();
        StorageServer storageServer = null;

        //定義storage的客戶端,建立與Storage服務(wù)器的連接
        StorageClient1 storageClient = new StorageClient1(trackerServer, storageServer);

        //查詢文件
        //upload success. file id is: group1/M00/00/00/wKjljWXHAauARHa2AAWwwNOt0hY257.png
        String[] splitStr = file_id.split("/");
        String group_name = splitStr[0];//group1
        String remoteFileName = "";//M00/00/00/wKjljWXHAauARHa2AAWwwNOt0hY257.png
        for (int i = 1; i < splitStr.length; i++) {
            remoteFileName += splitStr[i];
            if (i != splitStr.length - 1) {
                remoteFileName += "/";
            }
        }
        log.info("group_name : {}", group_name);
        log.info("remoteFileName : {}", remoteFileName);
        FileInfo fileInfo = storageClient.query_file_info(group_name, remoteFileName);
        log.info("fileInfo = {}", fileInfo);

        if (fileInfo == null) {
            log.info("您下載的文件信息不存在,請核對后再次下載......");
            return null;
        }

        //下載操作,傳文件id返回字節(jié)流
        byte[] bytes = storageClient.download_file1(file_id);

        //關(guān)閉storage客戶端
        storageClient.close();
        return bytes;
    }
}

8.2.FileServerController.java

@Slf4j
@RestController
@RequestMapping("/fastDFSFile")
public class FileServerController {

    @Resource
    private FastDfsFileService fastDfsFileService;

    @Resource
    private FastDfsFileTypeService fastDfsFileTypeService;

    @PostMapping("/upload")
    @ResponseBody
    public R upload(@RequestParam("file") MultipartFile file) throws IOException {
        //將文件先存儲(chǔ)在web服務(wù)器上(本機(jī)),在調(diào)用fastDFS的client將文件上傳到 fastDFS服務(wù)器
        FastDfsFile fastDFSFile = new FastDfsFile();

        String contentType = file.getContentType();
        //檢驗(yàn)當(dāng)前文件是否在上述集合中
        log.info("上傳的文件類型為:{}", contentType);
        int count = fastDfsFileTypeService.selectByFileType(contentType);
        if (count < 1) {
            log.info("不支持此文件類型上傳 : {}", contentType);
            return R.error().setCode(208).setMessage("不支持此文件類型上傳 : " + contentType);
        }
        log.info("此文件類型為 : {}", contentType);
        fastDFSFile.setFileType(contentType);

        //文件原始名稱
        String originalFilename = file.getOriginalFilename();
        log.info("原始文件名稱 : {}", originalFilename);
        fastDFSFile.setFileName(originalFilename);

        //文件擴(kuò)展名比如22.jpg
        String filenameExtension = StringUtils.getFilenameExtension(originalFilename);
        log.info("文件類型 = {}", filenameExtension);//jpg
        if (filenameExtension == null) {
            return R.error().setCode(208).setMessage("此文件沒有文件擴(kuò)展名");
        }
        fastDFSFile.setExt(filenameExtension);

        //新文件名稱
        String fileName = UUID.randomUUID().toString().replace("-", "") + "." + filenameExtension;
        log.info("新文件名稱 = {}", fileName);

        FastDfsFile fastDfsFile1 = FastDFSClient.upload(file, fastDFSFile);
        if (fastDfsFile1 != null) {
            fastDfsFileService.save(fastDfsFile1);
            Long id = fastDfsFileService.selectByFileId(fastDfsFile1.getFileId());
            fastDfsFile1.setId(id);
            return R.ok().setCode(200).setMessage("上傳成功").data("fastDfsFile", fastDfsFile1);
        }
        return R.error().setCode(208).setMessage("上傳失敗");
    }

    //restful風(fēng)格
    @DeleteMapping()
    public R delete(@RequestParam("id") Long id, @RequestParam("fileId") String fileId) throws MyException, IOException {
        Boolean result = FastDFSClient.delete(fileId);
        if (!result) {
            log.info("刪除失敗");
            return R.error().setCode(208).setMessage("刪除失敗");
        }
        int count = fastDfsFileService.deleteFastDfsFileById(id);
        if (count < 1) {
            log.info("刪除失敗");
            return R.error().setCode(208).setMessage("刪除失敗");
        }
        log.info("刪除成功");
        return R.ok().setCode(200).setMessage("刪除成功");
    }

    @GetMapping()
    public void downloadfile(HttpServletResponse response, String fileId, String fileName) throws IOException, MyException {
        if (fileId == null) return;
        log.info("fileName = {}", fileName);

        response.setContentType("application/force-download;charset=UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.addHeader("Content-Disposition", "attachment;fileName=" + new String(fileName.getBytes("gb2312"), "ISO-8859-1"));

        byte[] bytes = FastDFSClient.downloadFastFile(fileId);
        FileInputStream fis = null;
        log.info("fileId = {}", fileId);

        int len = 0;
        OutputStream outputStream = null;
        try {
            outputStream = response.getOutputStream();
            if (bytes == null) {
                return;
            }
            log.info("success");
            outputStream.write(bytes);
            outputStream.flush();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (outputStream != null) {
                    outputStream.close();
                }
                if (fis != null) {
                    fis.close();
                }
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }

    @GetMapping("/getPageFastImg/{page}/{limit}")
    public R getPageFastImg(@PathVariable int page, @PathVariable int limit) {
        PageBean<FastDfsFile> pageBean = fastDfsFileService.findFastDfsFileByPage(page, limit);
        return R.ok().setCode(200).setMessage("查詢成功").data("pageBean", pageBean);
    }
}

8.3.Vue的fast.js

import request from "../../utils/request";

const api_name = '/fastDFSFile'

export default {
  //上傳圖片
  uploadImg() {
    return request({
      url: `${api_name}`,
      method: 'post',
    })
  },
  getPageFastImg(page, limit) {
    return request({
      url: `${api_name}/getPageFastImg/${page}/${limit}`,
      method: 'get',
    })
  },
  getNextPageFastImg(page, limit) {
    return request({
      url: `${api_name}/getPageFastImg/${page}/${limit}`,
      method: 'get',
    })
  },
  //restful風(fēng)格 ?id=123&fileId=456
  deleteFastImg(id, fileId) {
    return request({
      url: `${api_name}`,
      method: 'delete',
      params: {
        "id": id,
        "fileId": fileId
      }
    })
  },
  getFileSrc(fileId) {
    return request({
      url: `${api_name}`,
      method: 'get',
      params: {
        "fileId": fileId
      },
      responseType: 'blod'
    })
  },
}

8.4.fastdfsimg.vue

<template>
  <div>
    <h2>圖片管理</h2>
    <!--圖片列表-->
    <el-table
      size="small"
      style="margin: 30px;"
      empty-text="無數(shù)據(jù)"
      :data="imgList"
      highlight-current-row v-loading="loading" border element-loading-text="拼命加載中">
      <el-table-column align="center" sortable prop="filePath" label="文件路徑" width="450"></el-table-column>
      <el-table-column align="center" sortable prop="fileSize" label="文件大小" width="100"></el-table-column>
      <el-table-column align="center" sortable prop="fileName" label="文件名" width="130"></el-table-column>
      <el-table-column align="center" sortable prop="ext" label="擴(kuò)展名" width="100"></el-table-column>
      <el-table-column align="center" sortable prop="fileType" label="文件類型" width="100"></el-table-column>
      <el-table-column align="center" sortable prop="filePath" label="預(yù)覽圖片" width="100">
        <template slot-scope="scope">
          <img :src="getImageUrl(scope.row.filePath)" style="max-width: 100px;max-height: 100px" alt="圖標(biāo)"/>
        </template>
      </el-table-column>
      <el-table-column label="操作" width="200" align="center">
        <template slot-scope="scope">
          <el-button type="text" size="small" icon="el-icon-download" @click="getFileSrc(scope.row)">下載</el-button>
          <el-popconfirm title="確定刪除嗎?" @confirm="handleDeleteOne(scope.row)">
            <template #reference>
              <el-button type="danger" size="small" icon="el-icon-delete">刪除</el-button>
            </template>
          </el-popconfirm>
        </template>
      </el-table-column>
    </el-table>

    <!-- 分頁 -->
    <el-pagination class="pagination" style="text-align: center;margin-top: 50px"
                   layout="prev, pager, next"
                   :current-page="page"
                   :total="total"
                   :page-size="limit"
                   @current-change="fetchData">
    </el-pagination>
  </div>
</template>

<script>
import fastApi from "@/api/fastdfs/fast";
import request from "../../utils/request";

export default {
  name: "FastdfsImg",
  data() {
    return {
      total: 0, // 數(shù)據(jù)庫中的總記錄數(shù)
      page: 1, // 默認(rèn)頁碼
      limit: 5, // 每頁記錄數(shù)

      imgList: {},
      //imagePath: 'http://192.168.229.141/', // 圖片的基礎(chǔ)路徑
    }
  },
  created() {
    this.init()
  },
  methods: {
    init() {
      fastApi.getPageFastImg(this.page, this.limit).then(response => {
        this.imgList = response.data.pageBean.lists
        this.total = response.data.pageBean.totalCount
      })
    },

    //獲取圖片路徑
    getImageUrl(filePath) {
      //return `${this.imagePath}${filePath}`; // 拼接圖片路徑
      return this.$baseImagePath + '/' + filePath; // 拼接圖片路徑
    },

    //下一頁
    fetchData(page) {
      this.page = page
      fastApi.getNextPageFastImg(this.page, this.limit).then(response => {
        this.imgList = response.data.pageBean.lists
        this.total = response.data.pageBean.totalCount
      })
    },

    // 單選刪除
    handleDeleteOne(FastDfsFile) {
      fastApi.deleteFastImg(FastDfsFile.id, FastDfsFile.fileId).then(response => {
        this.$message.success(response.message)
        this.init()
      })
    },

    // 下載文件
    getFileSrc(FastDfsFile) {
      //window.open(this.$baseImagePath+'/'+FastDfsFile.fileId,"_blank");
      /*fastApi.downloadFastImg(FastDfsFile.fileId).then(response=>{
        this.$message.success(response.message)
      })*/
      window.location.href = request.defaults.baseURL + '/fastDFSFile?fileId=' + FastDfsFile.fileId + '&&fileName=' + FastDfsFile.fileName;
    }

  },
}
</script>

<style scoped>

</style>

8.5.效果

分布式文件系統(tǒng) SpringBoot+FastDFS+Vue.js【四】,vue,springboot,spring boot,vue.js,后端
分布式文件系統(tǒng) SpringBoot+FastDFS+Vue.js【四】,vue,springboot,spring boot,vue.js,后端
分布式文件系統(tǒng) SpringBoot+FastDFS+Vue.js【四】,vue,springboot,spring boot,vue.js,后端
分布式文件系統(tǒng) SpringBoot+FastDFS+Vue.js【四】,vue,springboot,spring boot,vue.js,后端文章來源地址http://www.zghlxwxcb.cn/news/detail-829167.html

九、總結(jié)

  • 案例有些不足
  • 功能太簡單
  • 功能復(fù)雜可以做一個(gè)類似網(wǎng)盤的文件管理系統(tǒng)
  • 僅僅學(xué)習(xí)使用某些功能
  • 暫不深入開發(fā)
  • 有興趣的伙伴可以嘗試一番
  • 類似于阿里云oss

endl

到了這里,關(guān)于分布式文件系統(tǒng) SpringBoot+FastDFS+Vue.js【四】的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 搭建單機(jī)版FastDFS分布式文件存儲(chǔ)系統(tǒng)

    搭建單機(jī)版FastDFS分布式文件存儲(chǔ)系統(tǒng)

    1、下載FastDFS安裝包和依賴包 https://codeload.github.com/happyfish100/libfastcommon/tar.gz/V1.0.43 https://codeload.github.com/happyfish100/fastdfs/tar.gz/V6.06 https://codeload.github.com/happyfish100/fastdfs-nginx-module/tar.gz/V1.22 注:可以使用window瀏覽器(下載后需要上傳到服務(wù)器上),也可以使用linux的curl命令 2、

    2024年02月09日
    瀏覽(29)
  • 在Docker里安裝FastDFS分布式文件系統(tǒng)詳細(xì)步驟

    在Docker里安裝FastDFS分布式文件系統(tǒng)詳細(xì)步驟

    使用docker鏡像構(gòu)建tracker容器,用于啟動(dòng)跟蹤服務(wù)器,起到調(diào)度的作用。 其中-v參數(shù)將本地的目錄與容器中的/var/fdfs目錄進(jìn)行掛載 使用的網(wǎng)絡(luò)模式是–net=host –name容器名 -d后臺(tái)啟動(dòng) 使用docker鏡像構(gòu)建storage容器,用于啟動(dòng)存儲(chǔ)服務(wù)器,提供容量和備份服務(wù)。 在執(zhí)行下面命令時(shí)

    2024年02月03日
    瀏覽(15)
  • 開源輕量級分布式文件系統(tǒng)FastDFS本地部署并實(shí)現(xiàn)遠(yuǎn)程訪問服務(wù)器

    開源輕量級分布式文件系統(tǒng)FastDFS本地部署并實(shí)現(xiàn)遠(yuǎn)程訪問服務(wù)器

    FastDFS是一個(gè)開源的輕量級分布式文件系統(tǒng),它對文件進(jìn)行管理,功能包括:文件存儲(chǔ)、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲(chǔ)和負(fù)載均衡的問題。特別適合以文件為載體的在線服務(wù),如相冊網(wǎng)站、視頻網(wǎng)站等等。 FastDFS為互聯(lián)網(wǎng)量身定制,充分考

    2024年02月04日
    瀏覽(116)
  • FastDFS分布式文件存儲(chǔ)

    FastDFS分布式文件存儲(chǔ)

    為什么會(huì)有分布式文件系統(tǒng)? 分布式文件系統(tǒng)是面對互聯(lián)網(wǎng)的需求而產(chǎn)生。因?yàn)榛ヂ?lián)網(wǎng)時(shí)代要對海量數(shù)據(jù)進(jìn)行存儲(chǔ)。很顯然靠簡單的增加硬盤個(gè)數(shù)已經(jīng)滿足不了我們的要求。 因?yàn)橛脖P傳輸速度有限但是數(shù)據(jù)在急劇增長,另外我們還要要做好數(shù)據(jù)備份、數(shù)據(jù)安全等。 采用分布

    2024年01月23日
    瀏覽(21)
  • C++ 網(wǎng)絡(luò)編程項(xiàng)目fastDFS分布式文件系統(tǒng)(四)-fastCGI項(xiàng)目相關(guān)技術(shù)以及l(fā)inux搜狗輸入法相關(guān)問題。

    C++ 網(wǎng)絡(luò)編程項(xiàng)目fastDFS分布式文件系統(tǒng)(四)-fastCGI項(xiàng)目相關(guān)技術(shù)以及l(fā)inux搜狗輸入法相關(guān)問題。

    目錄 1. Nginx作為web服務(wù)器處理請求 2. http協(xié)議復(fù)習(xí) ? ? ??Get方式提交數(shù)據(jù) Post方式提交數(shù)據(jù) 3. fastCGI ? 3.1 CGI ?3.2 fastCGI 3.3 fastCGI和spawn-fcgi安裝 ????????1. 安裝fastCGI ? ??2. 安裝spawn-fcgi 3.4 nginx fastcgi? ?? 4其他知識(shí)點(diǎn) 1. fastCGI環(huán)境變量 - fastcgi.conf ?2. 客戶端使用Post提交數(shù)據(jù)

    2024年02月12日
    瀏覽(20)
  • 分布式文件存儲(chǔ)與數(shù)據(jù)緩存 FastDFS

    分布式文件存儲(chǔ)與數(shù)據(jù)緩存 FastDFS

    單機(jī)時(shí)代 初創(chuàng)時(shí)期由于時(shí)間緊迫,在各種資源有限的情況下,通常就直接在項(xiàng)目目錄下建立靜態(tài)文件夾,用于用戶存放項(xiàng)目中的文件資源。如果按不同類型再細(xì)分,可以在項(xiàng)目目錄下再建立不同的子目錄來區(qū)分。例如: resourcesstaticfile 、 resourcesstaticimg 等。 優(yōu)點(diǎn) :便利,

    2024年02月16日
    瀏覽(26)
  • springboot 對接 minio 分布式文件系統(tǒng)

    springboot 對接 minio 分布式文件系統(tǒng)

    1. minio介紹 Minio 是一個(gè)基于Go語言的對象存儲(chǔ)服務(wù)。它實(shí)現(xiàn)了大部分亞馬遜S3云存儲(chǔ)服務(wù)接口,可以看做是是S3的開源版本,非常適合于存儲(chǔ)大容量非結(jié)構(gòu)化的數(shù)據(jù),例如圖片、視頻、日志文件、備份數(shù)據(jù)和容器/虛擬機(jī)鏡像等,而一個(gè)對象文件可以是任意大小,從幾kb到最大

    2024年02月14日
    瀏覽(15)
  • 畢業(yè)設(shè)計(jì)項(xiàng)目:基于SpringBoot+Hadoop+Vue企業(yè)級網(wǎng)盤分布式系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    2.1 運(yùn)行環(huán)境 2.2 基本處理流程 企業(yè)網(wǎng)盤系統(tǒng)的使用者分為企業(yè)普通員工和企業(yè)管理員,所以進(jìn)行的基本處理流程是不一樣的。企業(yè)普通員工進(jìn)入本系統(tǒng)前臺(tái)主界面后看到的是首頁數(shù)據(jù)大盤,系統(tǒng)右上角有用戶的頭像和系統(tǒng)公告通知。在首頁頂部的位置有個(gè)歡迎用戶功能,此模

    2024年02月05日
    瀏覽(39)
  • 多文件分布式上傳-SpringBoot

    在現(xiàn)代化的互聯(lián)網(wǎng)應(yīng)用中,各種形式的上傳都成為了必備的功能之一。而對于大文件上傳以及多文件上傳來說,我們往往需要考慮分布式儲(chǔ)存的方案,以實(shí)現(xiàn)高效和可擴(kuò)展性。 本文將詳細(xì)介紹在SpringBoot中實(shí)現(xiàn)多文件分布式上傳的方法,我們將使用一個(gè)開源軟件FastDFS作為我們

    2024年02月06日
    瀏覽(15)
  • Springboot整合minio組件-分布式文件存儲(chǔ)

    一、快速開始 Minlo說明: Minio是Apcche旗下的一款開源的輕量級文件服務(wù)器,基于對象存儲(chǔ),協(xié)議是基于Apache License v2.0,開源可用于商務(wù)。 Minio主要用來存儲(chǔ)非結(jié)構(gòu)化的數(shù)據(jù),類似文件,圖片,照片,日志文件,各類備份文件等,按照官網(wǎng)描述,文件的大小從幾KB到5TB。 Minio提

    2024年02月11日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包