회사의 개발 프레임워크는 첨부 로컬 저장소, Alibaba Cloud, Huawei Cloud 등을 통합합니다. 현재 프로젝트에서는 첨부 저장소와 애플리케이션 배포 환경이 동일한 서버에 있을 수 없으며 프레임워크를 사용할 수 없습니다. 기술 선택 후 결정됨 minio를 통합하고 다른 서버에 minio를 배포한 후 외부 네트워크 포트를 열어 문제 해결
minio 설치 및 배포 패키지를 다운로드하고 해당 구성 파일을 생성합니다. 여기에 통합 압축 파일이 있습니다. package
다운로드 주소: http://xiazai.jb51.net/202204/yuanma/minio_jb51.rar
minioData 폴더를 파일 저장 경로로 생성하고 설치 패키지의 압축을 풀고 배치에 따라 해당 구성 파일 파일을 수정합니다. path
minio-service.xml 및 run.bat
<service> <id>minio</id> <name>MinIO Service</name> <description>MinIO is a High Performance Object Storage</description> <logpath>D:\minio\logs</logpath> <log mode="roll-by-size"> <sizeThreshold>10240</sizeThreshold> <keepFiles>8</keepFiles> </log> <executable>D:\minio\run.bat</executable> </service>
set MINIO_ACCESS_KEY=admin set MINIO_SECRET_KEY=abcd@1234 minio.exe server -address :9999 D:\minioData
배포 패키지 압축 해제 후 cmd에 해당 압축 해제 경로를 입력하고 minio.exe server D:minioData 명령을 입력한 후 cmd 명령을 종료하세요
서비스 설치 도구를 선택하여 서비스를 설치하려면 minio-service.exe
windows 서비스 설치 도구 다운로드 주소 :http://xiazai.jb51.net/202204/yuanma/windowsfuwu_jb51.rar
서비스를 시작한 후 http를 방문하세요. //127.0.0.1:9999/
사용자 이름: admin 비밀번호: abcd@1234 (포트 및 계정 비밀번호는 모두 run.bat 파일에 구성되어 있습니다.)
시스템에 들어가 파일 저장용 버킷을 생성합니다(Alibaba와 유사) 클라우드)
<dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>7.1.0</version> </dependency>
여기서 별도로 구성하세요. 업로드/다운로드 주소는 공식 프로젝트입니다. 외부 네트워크 포트 구성 후 해당 외부 네트워크 포트입니다. 업로드는 내부 네트워크를 통해, 다운로드는 외부 네트워크를 통해 진행됩니다
#minio配置 # 上传地址 minio_uploadurl: http://192.168.1.42:9999/ # 下载地址 minio_downloadurl: http://192.168.1.42:9999/ # 账户 minio_accesskey: admin # 密码 minio_secrectkey: abcd@1234 # 存储文件夹 minio_bucknetname: xxx
public MinioClient InitMinio() { MinioClient minioClient = MinioClient.builder(). endpoint(frameConfig.getMinio_uploadurl()). credentials(frameConfig.getMinio_accesskey(),frameConfig.getMinio_secrectkey()).build(); try{ boolean isExist = minioClient.bucketExists(frameConfig.getMinio_bucknetname()); if (!isExist) { minioClient.makeBucket(frameConfig.getMinio_bucknetname()); } }catch (Exception e){ e.printStackTrace(); } return minioClient; }
getkey 메소드는 해당 사용자 정의 저장 경로만 지정합니다
콘텐츠 유형을 지정하면 브라우저에서 첨부 파일을 열 수 있을 때 그림과 PDF 파일을 온라인으로 검색할 수 있습니다
지정하지 않으면 기본값은 스트림이고 파일 열기는 다운로드를 위해 통합됩니다
public boolean uploadMinioFile(InputStream stream, AttachmentDO attachmentDO,String contentType){ boolean result = true; try{ MinioClient minioClient = InitMinio(); String bucketName =frameConfig.getMinio_bucknetname(); PutObjectOptions option = new PutObjectOptions(stream.available(), -1); option.setContentType(contentType); minioClient.putObject(bucketName,getKey(attachmentDO),stream,option); }catch (Exception e){ logger.error("Minio上传文件失败:" + e.getMessage()); result = false; } return result; }
이어야 합니다 생성된 파일 다운로드 주소는 MinioClient에 지정된 서버 주소에 바인딩되어 있습니다. nginx 프록시
public String readMinioCommonFile(AttachmentDO attachmentDO){ String fileurl = ""; try{ MinioClient minioClient = InitMinio(); String bucketName =frameConfig.getMinio_bucknetname(); return minioClient.presignedGetObject(bucketName, getKey(attachmentDO)); }catch (Exception e){ logger.error("Minio读取文件失败:" + e.getMessage()); } return fileurl; }
public boolean deleteMinioFile(AttachmentDO attachmentDO){ boolean result = true; try{ MinioClient minioClient = InitMinio(); String bucketName =frameConfig.getMinio_bucknetname(); minioClient.removeObject(bucketName,getKey(attachmentDO)); }catch (Exception e){ logger.error("Minio删除文件失败:" + e.getMessage()); result = false; } return result; }를 사용한 후에는 유효하지 않습니다.
위 내용은 SpringBoot가 Minio 파일 저장소를 통합하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!