国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

網(wǎng)易游戲官網(wǎng)seo網(wǎng)站推廣如何做

網(wǎng)易游戲官網(wǎng),seo網(wǎng)站推廣如何做,wordpress是用什么語(yǔ)言,浙江華洋建設(shè)有限公司網(wǎng)站MinIO 是一個(gè)開(kāi)源的對(duì)象存儲(chǔ)服務(wù)器,專(zhuān)注于高性能、分布式和兼容S3 API的存儲(chǔ)解決方案。本文將介紹如何在 Spring Boot 應(yīng)用程序中集成 MinIO,以便您可以輕松地將對(duì)象存儲(chǔ)集成到您的應(yīng)用中。 安裝minio 拉取 minio Docker鏡像 docker pull minio/minio創(chuàng)…

MinIO 是一個(gè)開(kāi)源的對(duì)象存儲(chǔ)服務(wù)器,專(zhuān)注于高性能、分布式和兼容S3 API的存儲(chǔ)解決方案。本文將介紹如何在 Spring Boot 應(yīng)用程序中集成 MinIO,以便您可以輕松地將對(duì)象存儲(chǔ)集成到您的應(yīng)用中。

安裝minio

  1. 拉取 minio Docker鏡像

    docker pull minio/minio
    
  2. 創(chuàng)建minio數(shù)據(jù)和配置目錄

    mkdir -p /data/minio/data /data/minio/config
    
  3. 運(yùn)行minio容器,設(shè)置訪問(wèn)和密鑰并掛載數(shù)據(jù)卷

    docker run -p 9090:9090 -p 9000:9000 --name minio \-v ~/data/minio/data:/data \-v ~/data/minio/config:/root/.minio \-e "MINIO_ACCESS_KEY=minio" \-e "MINIO_SECRET_KEY=minio123" \minio/minio server /data --console-address ":9090"
    

或者 使用 docker-compose.yml

version: '3.9'
services:minio:command: 'server /data --console-address ":9090"'image: minio/minioenvironment:- MINIO_SECRET_KEY=minio123- MINIO_ACCESS_KEY=miniovolumes:- '~/data/minio/config:/root/.minio'- '~/data/minio/data:/data'container_name: minioports:- '9000:9000'- '9090:9090'
  • mkdir``~/minio/data在您的主目錄中創(chuàng)建一個(gè)新的本地目錄。
  • docker run啟動(dòng) MinIO 容器。
  • -p將本地端口綁定到容器端口。
  • -name為容器創(chuàng)建一個(gè)名稱。
  • -v將文件路徑設(shè)置為容器要使用的持久卷位置。當(dāng) MinIO 將數(shù)據(jù)寫(xiě)入 時(shí)/data,該數(shù)據(jù)會(huì)鏡像到本地路徑~/minio/data,從而允許其在容器重新啟動(dòng)之間保留。您可以替換~/minio/data為用戶具有讀取、寫(xiě)入和刪除訪問(wèn)權(quán)限的另一個(gè)本地文件位置。
  • -e分別設(shè)置環(huán)境變量MINIO_ROOT_USERMINIO_ROOT_PASSWORD。這些設(shè)置root 用戶憑據(jù)。更改用于您的容器的示例值。

運(yùn)行結(jié)果

WARNING: MINIO_ACCESS_KEY and MINIO_SECRET_KEY are deprecated.Please use MINIO_ROOT_USER and MINIO_ROOT_PASSWORD
Formatting 1st pool, 1 set(s), 1 drives per set.
WARNING: Host local has more than 0 drives of set. A host failure will result in data becoming unavailable.
MinIO Object Storage Server
Copyright: 2015-2023 MinIO, Inc.
License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>
Version: RELEASE.2023-08-29T23-07-35Z (go1.19.12 linux/amd64)Status:         1 Online, 0 Offline. 
S3-API: http://172.17.0.2:9000  http://127.0.0.1:9000 
Console: http://172.17.0.2:9090 http://127.0.0.1:9090 Documentation: https://min.io/docs/minio/linux/index.html
Warning: The standard parity is set to 0. This can lead to data loss.
  1. 登錄 控制臺(tái) http://127.0.0.1:9090/browser 用戶名密碼是你啟動(dòng)時(shí)初始化的這里是 minio、minio123
  2. 創(chuàng)建 桶(Buckets)
    在這里插入圖片描述

參考:

  1. https://min.io/docs/minio/container/index.html

Spring Boot 集成

1. 添加 MinIO 客戶端依賴

在您的 Spring Boot 項(xiàng)目的 pom.xml 文件中添加 MinIO 客戶端依賴:

<dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.5.5</version>
</dependency>

接下來(lái),您需要在您的Spring Boot應(yīng)用程序中配置MinIO客戶端。您可以在application.propertiesapplication.yml文件中添加以下配置:

# MinIO配置
minio.endpoint=http://localhost:9000  # MinIO服務(wù)器的地址
minio.access-key=minio     # 您的訪問(wèn)密鑰
minio.secret-key=minio123     # 您的秘密密鑰

2. 創(chuàng)建 MinIO 配置類(lèi)

創(chuàng)建一個(gè)配置類(lèi),用于初始化 MinIO 客戶端。創(chuàng)建一個(gè)名為 MinioConfig 的類(lèi):

import io.minio.MinioClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class MinioConfig {@Value("${minio.endpoint}")private String endpoint;@Value("${minio.access-key}")private String accessKey;@Value("${minio.secret-key}")private String secretKey;@Beanpublic MinioClient minioClient() {return MinioClient.builder().endpoint(endpoint).credentials(accessKey, secretKey).build();}
}

3. 集成 MinIO 操作到您的應(yīng)用

您可以在您的服務(wù)或控制器中使用 MinioClient 來(lái)進(jìn)行 MinIO 操作。以下是一個(gè)上傳文件到 MinIO 的示例:


import io.minio.GetObjectArgs;
import io.minio.GetObjectResponse;
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import okhttp3.Headers;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.InputStreamResource;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;@RestController
@RequestMapping("/minio")
public class MinioController {@Autowiredprivate MinioClient minioClient;@PostMapping("/upload")public String uploadFile(@RequestParam("file") MultipartFile file) {try {/*** 使用 UUID 作為對(duì)象名稱:* 1. 唯一性,避免對(duì)象名稱沖突。* 2. 隱藏實(shí)際文件信息,提高一定的隱私。* 3. 對(duì)象名稱不受原始文件名長(zhǎng)度或特殊字符的限制。* 在實(shí)際場(chǎng)景中,如果你更注重文件的可識(shí)別性和管理,可以考慮使用文件名稱。如果你更注重唯一性和隱私性,可以考慮使用 UUID。* 同時(shí),你也可以結(jié)合兩者,例如將文件名作為對(duì)象屬性存儲(chǔ),然后使用 UUID 作為對(duì)象名稱。這樣既可以保留文件信息,又能保證唯一性。*/String objectName = UUID.randomUUID().toString();Map<String, String> metadata = new HashMap<>();metadata.put("originalFilename", file.getOriginalFilename());minioClient.putObject(PutObjectArgs.builder().bucket("firsttest").object(objectName).userMetadata(metadata).stream(file.getInputStream(), file.getSize(), -1).contentType(file.getContentType()).build());return "File uploaded successfully!  fileId: " + objectName;} catch (Exception e) {return "Error uploading file: " + e.getMessage();}}@GetMapping("/download/{filename}")public ResponseEntity<InputStreamResource> downloadFile(@PathVariable("filename") String filename) {try {Optional<GetObjectResponse> inputStream = Optional.ofNullable(minioClient.getObject(GetObjectArgs.builder().bucket("firsttest").object(filename).build()));if (inputStream.isPresent()) {InputStreamResource resource = new InputStreamResource(inputStream.get());Headers headers = inputStream.get().headers();ResponseEntity.BodyBuilder bodyBuilder = ResponseEntity.ok();String mediaType = headers.get("Content-Type");if (StringUtils.isNotEmpty(mediaType)) {bodyBuilder.contentType(MediaType.parseMediaType(mediaType));}return bodyBuilder.header("Content-Disposition", "attachment; filename=" + URLEncoder.encode(headers.get("X-Amz-Meta-originalfilename"), StandardCharsets.UTF_8)).body(resource);} else {return ResponseEntity.notFound().build();}} catch (Exception e) {return ResponseEntity.badRequest().body(null);}}}

使用 UUID 作為對(duì)象名稱:

  1. 唯一性,避免對(duì)象名稱沖突。
  2. 隱藏實(shí)際文件信息,提高一定的隱私。
  3. 對(duì)象名稱不受原始文件名長(zhǎng)度或特殊字符的限制。

在實(shí)際場(chǎng)景中,如果你更注重文件的可識(shí)別性和管理,可以考慮使用文件名稱。如果你更注重唯一性和隱私性,可以考慮使用 UUID。
同時(shí),你也可以結(jié)合兩者,例如將文件名作為對(duì)象屬性存儲(chǔ),然后使用 UUID 作為對(duì)象名稱。這樣既可以保留文件信息,又能保證唯一性。

http://127.0.0.1:80/minio/upload 上傳完畢成功后,控制臺(tái)查看文件
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

自定義 metadata 為啥前綴有 X-Amz-Meta-?

在 MinIO 中,當(dāng)你設(shè)置自定義元數(shù)據(jù)(metadata)時(shí),MinIO 會(huì)遵循 Amazon S3 的元數(shù)據(jù)規(guī)范,其中元數(shù)據(jù)的鍵名> 前會(huì)添加 x-amz-meta- 前綴。這是因?yàn)?MinIO 是一個(gè)兼容 Amazon S3 API 的對(duì)象存儲(chǔ)服務(wù)器,因此它采用了 Amazon > S3 的一些規(guī)范和約定。
Amazon S3 使用 x-amz-meta- 前綴來(lái)標(biāo)識(shí)用戶自定義的元數(shù)據(jù),以便與 Amazon S3 內(nèi)部使用的標(biāo)準(zhǔn)元數(shù)據(jù)進(jìn)行區(qū)> 分。這樣可以確保用戶自定義的元數(shù)據(jù)不會(huì)與 S3 內(nèi)部使用的元數(shù)據(jù)沖突。這也是為了保持兼容性,使 MinIO 用戶可以> 使用與 Amazon S3 相同的元數(shù)據(jù)命名約定。
因此,在 MinIO 中設(shè)置自定義元數(shù)據(jù)時(shí),不需要手動(dòng)添加 x-amz-meta- 前綴,MinIO 會(huì)自動(dòng)處理這個(gè)前綴,確保它符合 Amazon S3 的規(guī)范。當(dāng)你從對(duì)象中檢索元數(shù)據(jù)時(shí),MinIO 也會(huì)自動(dòng)解析并返回合適的鍵名,不包含前綴。
總之,這個(gè)前綴是 MinIO 為了兼容 Amazon S3 API,保持統(tǒng)一性而引入的。

請(qǐng)注意,上述示例僅為基本示例,用于展示如何在Spring Boot中集成MinIO。您可以根據(jù)您的實(shí)際需求進(jìn)行更多的配置和操作。確保替換示例中的"your-access-key"、“your-secret-key”、"your-bucket-name"和其他參數(shù)為您自己的值。

最后,不要忘記在您的MinIO服務(wù)器上創(chuàng)建對(duì)應(yīng)的存儲(chǔ)桶(Bucket),以及設(shè)置正確的訪問(wèn)權(quán)限。

http://aloenet.com.cn/news/43277.html

相關(guān)文章:

  • 電子商務(wù)代運(yùn)營(yíng)百度筆記排名優(yōu)化
  • 上蔡專(zhuān)業(yè)網(wǎng)站建設(shè)突發(fā)大事震驚全國(guó)
  • 南寧哪里做網(wǎng)站輸入關(guān)鍵詞進(jìn)行搜索
  • 網(wǎng)站權(quán)重劃分seo 是什么
  • 用pc做網(wǎng)站服務(wù)器為什么不如云主機(jī)百度輸入法下載
  • 長(zhǎng)沙免費(fèi)網(wǎng)站排名seo觀察網(wǎng)
  • 做o2o平臺(tái)網(wǎng)站需要多少錢(qián)chrome 谷歌瀏覽器
  • 個(gè)性個(gè)人網(wǎng)站模板建網(wǎng)站建設(shè)
  • 化妝品可做的團(tuán)購(gòu)網(wǎng)站有哪些seo排名優(yōu)化教程
  • php網(wǎng)站開(kāi)發(fā)什么外貿(mào)推廣代理
  • 潤(rùn)東電子科技 網(wǎng)站建設(shè)全網(wǎng)營(yíng)銷(xiāo)推廣方案外包
  • 濟(jì)南網(wǎng)站APP如何做好百度推廣
  • 二手房網(wǎng)站怎么做最常見(jiàn)企業(yè)網(wǎng)站公司有哪些
  • 云主機(jī)做網(wǎng)站域名打不開(kāi)線上營(yíng)銷(xiāo)活動(dòng)有哪些
  • 外貿(mào)公司的網(wǎng)站建設(shè)杭州seo專(zhuān)員
  • 我要建個(gè)網(wǎng)站做微商如何引流推廣怎么找客源
  • wordpress Ins同步百度seo關(guān)鍵詞排名 s
  • 有找獵聘網(wǎng)站做簡(jiǎn)歷優(yōu)化的南寧關(guān)鍵詞排名公司
  • 龍巖網(wǎng)站設(shè)計(jì)培訓(xùn)軟文營(yíng)銷(xiāo)的步驟
  • 金閶公司網(wǎng)站建設(shè)電話優(yōu)化排名推廣關(guān)鍵詞
  • 拓客軟件網(wǎng)站百度seo關(guān)鍵詞優(yōu)化
  • 阿里云服務(wù)器上的網(wǎng)站怎么做修改四川省人民政府官網(wǎng)
  • 北京公司網(wǎng)站建設(shè)價(jià)格seo營(yíng)銷(xiāo)排名
  • 手機(jī)網(wǎng)站底部電話軟文營(yíng)銷(xiāo)的寫(xiě)作技巧有哪些
  • jq特效網(wǎng)站模板全網(wǎng)最好的推廣平臺(tái)
  • 怎么做自已的網(wǎng)站太原seo網(wǎng)站排名
  • asp做網(wǎng)站的優(yōu)勢(shì)是什么新品牌推廣方案
  • 鄭州網(wǎng)站建設(shè)特色得物app的網(wǎng)絡(luò)營(yíng)銷(xiāo)分析論文
  • 桂林市內(nèi)旅游必去景點(diǎn)整站seo外包
  • 深圳做網(wǎng)站信科品牌推廣內(nèi)容