免费爱碰视频在线观看,九九精品国产屋,欧美亚洲尤物久久精品,1024在线观看视频亚洲

      對象存儲-MinIo

      簡介:

      構(gòu)建高性能的云原生數(shù)據(jù)、機器學習,大數(shù)據(jù)分析,海量存儲的基礎架構(gòu)、MinIO支持各種應用程序數(shù)據(jù)工作負載。

      特點:

      • 高性能
      • 可擴展性
      • 云的原生支持
      • 簡單
      • 開放全部源代碼 + 企業(yè)級支持
      • 與Amazon S3 兼容

      一、搭建

      支持Docker鏡像部署

      1、從hub.docker.com拉取最新鏡像

      命令:docker pull minio/minio (此命令就等同于 : docker pull minio/minio:latest)

      2、創(chuàng)建目錄

      一個用來存放配置,一個用來存儲上傳文件的目錄

      啟動前需要先創(chuàng)建Minio外部掛載的配置文件( /home/minio/config),和存儲上傳文件的目錄( /home/minio/data)

      mkdir -p /home/minio/configmkdir -p /home/minio/data

      3、創(chuàng)建Minio容器并運行

      多行命令

      docker run -p 9000:9000 -p 9090:9090–net=host–name minio-d –restart=always-e “MINIO_ACCESS_KEY=minioadmin”-e “MINIO_SECRET_KEY=minioadmin”-v /home/minio/data:/data-v /home/minio/config:/root/.miniominio/minio server/data –console-address “:9090” -address “:9000”

      單行命令

      docker run -p 9000:9000 -p 9090:9090–net=host–name minio-d –restart=always-e “MINIO_ACCESS_KEY=minioadmin”-e “MINIO_SECRET_KEY=minioadmin”-v /home/minio/data:/data-v /home/minio/config:/root/.miniominio/minio server/data –console-address “:9090” -address “:9000”

      9090:客戶端端口

      9000:api端口(項目中所用)

      MINIO_ACCESS_KEY :賬號

      MINIO_SECRET_KEY :密碼(賬號長度必須大于等于5,密碼長度必須大于等于8位)

      4、客戶端訪問

      地址:http://ip:9090

      二、整合項目(SpringBoot項目)

      1、application.yml

      2、minio文件上傳工具類

      public class MinioUtil {private static String minioUrl;private static String minioName;private static String minioPass;private static String bucketName;public static void setMinioUrl(String minioUrl) {MinioUtil.minioUrl = minioUrl;}public static void setMinioName(String minioName) {MinioUtil.minioName = minioName;}public static void setMinioPass(String minioPass) {MinioUtil.minioPass = minioPass;}public static void setBucketName(String bucketName) {MinioUtil.bucketName = bucketName;}public static String getMinioUrl() {return minioUrl;}public static String getBucketName() {return bucketName;}private static MinioClient minioClient = null;/** * 上傳文件 * @param file * @return */public static String upload(MultipartFile file, String bizPath, String customBucket) {String file_url = “”;//update-begin-author:wangshuai date:20201012 for: 過濾上傳文件夾名特殊字符,防止攻擊bizPath=StrAttackFilter.filter(bizPath);//update-end-author:wangshuai date:20201012 for: 過濾上傳文件夾名特殊字符,防止攻擊String newBucket = bucketName;if(oConvertUtils.isNotEmpty(customBucket)){newBucket = customBucket;}try {initMinio(minioUrl, minioName,minioPass);// 檢查存儲桶是否已經(jīng)存在if(minioClient.bucketExists(BucketExistsArgs.builder().bucket(newBucket).build())) {log.info(“Bucket already exists.”);} else {// 創(chuàng)建一個名為ota的存儲桶minioClient.makeBucket(MakeBucketArgs.builder().bucket(newBucket).build());log.info(“create a new bucket.”);}InputStream stream = file.getInputStream();// 獲取文件名String orgName = file.getOriginalFilename();if(“”.equals(orgName)){orgName=file.getName();}orgName = CommonUtils.getFileName(orgName);String objectName = bizPath+”/”+orgName.substring(0, orgName.lastIndexOf(“.”)) + “_” + System.currentTimeMillis() + orgName.substring(orgName.lastIndexOf(“.”));// 使用putObject上傳一個本地文件到存儲桶中。if(objectName.startsWith(“/”)){objectName = objectName.substring(1);}PutObjectArgs objectArgs = PutObjectArgs.builder().object(objectName).bucket(newBucket).contentType(“application/octet-stream”).stream(stream,stream.available(),-1).build();minioClient.putObject(objectArgs);stream.close();file_url = minioUrl+newBucket+”/”+objectName;}catch (Exception e){log.error(e.getMessage(), e);}return file_url;}/** * 文件上傳 * @param file * @param bizPath * @return */public static String upload(MultipartFile file, String bizPath) {returnupload(file,bizPath,null);}/** * 獲取文件流 * @param bucketName * @param objectName * @return */public static InputStream getMinioFile(String bucketName,String objectName){InputStream inputStream = null;try {initMinio(minioUrl, minioName, minioPass);GetObjectArgs objectArgs = GetObjectArgs.builder().object(objectName).bucket(bucketName).build();inputStream = minioClient.getObject(objectArgs);} catch (Exception e) {log.info(“文件獲取失敗” + e.getMessage());}return inputStream;}/** * 刪除文件 * @param bucketName * @param objectName * @throws Exception */public static void removeObject(String bucketName, String objectName) {try {initMinio(minioUrl, minioName,minioPass);RemoveObjectArgs objectArgs = RemoveObjectArgs.builder().object(objectName).bucket(bucketName).build();minioClient.removeObject(objectArgs);}catch (Exception e){log.info(“文件刪除失敗” + e.getMessage());}}/** * 獲取文件外鏈 * @param bucketName * @param objectName * @param expires * @return */public static String getObjectURL(String bucketName, String objectName, Integer expires) {initMinio(minioUrl, minioName,minioPass);try{GetPresignedObjectUrlArgs objectArgs = GetPresignedObjectUrlArgs.builder().object(objectName).bucket(bucketName).expiry(expires).build();String url = minioClient.getPresignedObjectUrl(objectArgs);return URLDecoder.decode(url,”UTF-8″);}catch (Exception e){log.info(“文件路徑獲取失敗” + e.getMessage());}return null;}/** * 初始化客戶端 * @param minioUrl * @param minioName * @param minioPass * @return */private static MinioClient initMinio(String minioUrl, String minioName,String minioPass) {if (minioClient == null) {try {minioClient = MinioClient.builder().endpoint(minioUrl).credentials(minioName, minioPass).build();} catch (Exception e) {e.printStackTrace();}}return minioClient;}/** * 上傳文件到minio * @param stream * @param relativePath * @return */public static String upload(InputStream stream,String relativePath) throws Exception {initMinio(minioUrl, minioName,minioPass);if(minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build())) {log.info(“Bucket already exists.”);} else {// 創(chuàng)建一個名為ota的存儲桶minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());log.info(“create a new bucket.”);}PutObjectArgs objectArgs = PutObjectArgs.builder().object(relativePath).bucket(bucketName).contentType(“application/octet-stream”).stream(stream,stream.available(),-1).build();minioClient.putObject(objectArgs);stream.close();return minioUrl+bucketName+”/”+relativePath;}}

      3、controller

      @PostMapping(value = “/uploadMinio”)public Result uploadMinio(HttpServletRequest request) {Result result = new Result();String bizPath = request.getParameter(“biz”);if(oConvertUtils.isEmpty(bizPath)){bizPath = “”;}MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;MultipartFile file = multipartRequest.getFile(“file”);// 獲取上傳文件對象String orgName = file.getOriginalFilename();// 獲取文件名orgName = CommonUtils.getFileName(orgName);String file_url =MinioUtil.upload(file,bizPath);if(oConvertUtils.isEmpty(file_url)){return Result.error(“上傳失敗,請檢查配置信息是否正確!”);}//保存文件信息OSSFile minioFile = new OSSFile();minioFile.setFileName(orgName);minioFile.setUrl(file_url);ossFileService.save(minioFile);result.setMessage(file_url);result.setSuccess(true);return result;}

      4、前端組件

      MINIO文件上傳

      好啦, 關于{對象存儲-MinIo}分享就到這啦, 如果你是前端工程師同學,歡迎試用體驗【webfunny監(jiān)控系統(tǒng)】。

      webfunny前端監(jiān)控


      Webfunny前端應用專注于微信小程序、H5前端、PC前端線上應用實時監(jiān)控,實時監(jiān)控前端網(wǎng)頁、前端數(shù)據(jù)分析、錯誤統(tǒng)計分析監(jiān)控和BUG預警,第一時間報警,快速修復BUG!支持私有化部署,容器化部署。

      鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權歸原作者所有,如有侵權請聯(lián)系管理員(admin#wlmqw.com)刪除。
      用戶投稿
      上一篇 2022年9月19日 18:28
      下一篇 2022年9月19日 18:28

      相關推薦

      • cad連續(xù)標注快捷鍵(cad連續(xù)標注快捷鍵)

        本文主要講的是cad連續(xù)標注快捷鍵,以及和cad連續(xù)標注快捷鍵相關的知識,如果覺得本文對您有所幫助,不要忘了將本文分享給朋友。 cad中連續(xù)標注快捷鍵 CAD尺寸標準快捷命令:DL…

        2022年11月27日
      • 科比19歲女兒遭自稱與她生“科比式孩子”男子跟蹤騷擾

        極目新聞記者王亮亮黃佳琪 據(jù)??怂剐侣劸W(wǎng)報道,當?shù)貢r間11月21日,已故籃球巨星科比·布萊恩特的長女娜塔莉亞·布萊恩特21日向法院提交臨時限制令,聲稱這位32歲的前科從十幾歲起就騷…

        2022年11月24日
      • 免費清理c盤的軟件(清理c盤空間不影響系統(tǒng))

        電腦用久了慢如龜速,還卡頓,這最大的原因啊就是C盤空間不足造成的。 即使電腦配置再好,或者硬盤再快,如果長時間沒有打掃C盤,打開文件或者穩(wěn)定之類的,都卡得讓人頭大。 這時候呢不要去…

        2022年11月24日
      • pdf虛擬打印機(添加pdf虛擬打印機)

        本文主要講的是pdf虛擬打印機,以及和添加pdf虛擬打印機相關的知識,如果覺得本文對您有所幫助,不要忘了將本文分享給朋友。 pdf虛擬打印機具體是什么功能? 電腦虛擬打印機的功能有…

        2022年11月24日
      • ftp端口號(ftp端口號可以自定義嗎)

        FTP端口號是21在FTP服務器中,我們往往會給不同的部門或者某個特定的用戶設置一個帳戶但是,這個賬戶有個特點,就是其只能夠訪問自己的主目錄服務器通過這種方式來保障FTP服務上其他…

        2022年11月21日
      • 給手機安裝了Windows 11(手機上玩電腦游戲的軟件)

        電腦上體驗了一番Windows 11 ,感覺怎么樣?接下來想要在手機上嘗試嘗試嗎?不是遠程桌面,也并不是虛擬機,而是手機直接運行原生的win11系統(tǒng)! 那么最近小編就看到網(wǎng)上不少朋…

        2022年11月18日
      • 字體庫在哪個文件夾(字體庫在哪個文件夾里)

        今天小編給各位分享字體庫在哪個文件夾的知識,其中也會對字體庫在哪個文件夾里進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關注本站,現(xiàn)在開始吧! 字體庫在Windows文件夾里面的…

        2022年11月17日
      • 命令方塊怎么獲得(我的世界凋零風暴命令方塊怎么獲得)

        本文主要講的是命令方塊怎么獲得,以及和我的世界凋零風暴命令方塊怎么獲得相關的知識,如果覺得本文對您有所幫助,不要忘了將本文分享給朋友。 我的世界如何獲得命令方塊 我的世界可以輸入/…

        2022年11月15日
      • dat是什么格式

        本文主要講的是dat是什么格式,以及和相關的知識,如果覺得本文對您有所幫助,不要忘了將本文分享給朋友。 DAT是什么文件格式? dat格式 DAT格式: DAT(Digital A…

        2022年11月11日
      • 韓國踩踏事故6人被立案,有兩人刪除踩踏警告文件,他則視而不見

        韓國梨泰院踩踏事故已經(jīng)過去多天,事故造成300多人死傷,其中155人遇難,失去親人的人們估計還沒有從悲傷中走出來,而韓國方面也很快做出了賠償政策,決定對當時遇難的每人賠付1500萬…

        2022年11月9日

      聯(lián)系我們

      聯(lián)系郵箱:admin#wlmqw.com
      工作時間:周一至周五,10:30-18:30,節(jié)假日休息