docker怎么安装minio及实现文件上传、删除、下载
这篇文章主要介绍“docker怎么安装minio及实现文件上传、删除、下载”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“docker怎么安装minio及实现文件上传、删除、下载”文章能帮助大家解决问题。
1. docker安装minio步骤
第一步 查镜像
dockersearchminio
第二步 拉镜像
dockerpullminio/minio
第三步 启动容器
dockerrun-p9000:9000--nameminio-d--restart=always-e“MINIO_ACCESS_KEY=admin”-e“MINIO_SECRET_KEY=admin123456”-v/home/data:/data-v/home/config:/root/.miniominio/minioserver/data
第四步 登录界面
http//:ip+9000
ACCESS_KEY:damin
SECRET_KEY:admin123456
2. minio实现文件上传、删除、下载
项目结构
pom依赖:
<dependencies><dependency><groupId>.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2.1.0.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>3.0.10</version></dependency></dependencies>
启动类:
@SpringBootApplication@EnableDiscoveryClientpublicclassCfUploadApplication{publicstaticvoidmain(String[]args){SpringApplication.run(CfUploadApplication.class,args);}}
yml配置文件:
server:port:8002spring:application:name:upload-servicecloud:nacos:discovery:server-addr:localhost:8848servlet:multipart:enabled:true#开启文件上传max-file-size:500MBmax-request-size:500MBminio:endpoint:localhost:9000#Minio服务所在地址bucketName:cheung#存储桶名称accessKey:admin#访问的keysecretKey:admin123456#访问的秘钥logging:level: .heima:debug
controller代码:
package .cheung.upload.controller;importio.minio.MinioClient;importio.minio.policy.PolicyType;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.web.bind.annotation.*;importorg.springframework.web.multipart.MultipartFile;importjavax.servlet.http.HttpServletResponse;importjava.io.InputStream;importjava.io.OutputStream;importjava.net.URLEncoder;importjava.text.SimpleDateFormat;importjava.util.Date;@RestController@RequestMapping("file")publicclassUploadController{privatestaticfinalLoggerLOGGER=LoggerFactory.getLogger(UploadController.class);@Value("${minio.endpoint}")privateStringENDPOINT;@Value("${minio.bucketName}")privateStringBUCKETNAME;@Value("${minio.accessKey}")privateStringACCESSKEY;@Value("${minio.secretKey}")privateStringSECRETKEY;//文件创建@PostMapping("/upload")publicStringupload(MultipartFilefile){Strings=null;try{MinioClientminioClient=newMinioClient(ENDPOINT,ACCESSKEY,SECRETKEY);//存入bucket不存在则创建,并设置为只读if(!minioClient.bucketExists(BUCKETNAME)){minioClient.makeBucket(BUCKETNAME);minioClient.setBucketPolicy(BUCKETNAME,"*.*",PolicyType.READ_ONLY);}Stringfilename=file.getOriginalFilename();SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");//文件存储的目录结构StringobjectName=sdf.format(newDate())+"/"+filename;//存储文件minioClient.putObject(BUCKETNAME,objectName,file.getInputStream(),file.getContentType());LOGGER.info("文件上传成功!");s=ENDPOINT+"/"+BUCKETNAME+"/"+objectName;}catch(Exceptione){LOGGER.info("上传发生错误:{}!",e.getMessage());}returns;}//文件删除@DeleteMapping("/delete")publicStringdelete(Stringname){try{MinioClientminioClient=newMinioClient(ENDPOINT,ACCESSKEY,SECRETKEY);minioClient.removeObject(BUCKETNAME,name);}catch(Exceptione){return"删除失败"+e.getMessage();}return"删除成功";}//文件下载@GetMapping("/download")publicvoiddownloadFiles(@RequestParam("filename")Stringfilename,HttpServletResponsehttpResponse){try{MinioClientminioClient=newMinioClient(ENDPOINT,ACCESSKEY,SECRETKEY);InputStreamobject=minioClient.getObject(BUCKETNAME,filename);bytebuf[]=newbyte[1024];intlength=0;httpResponse.reset();httpResponse.setHeader("Content-Disposition","attachment;filename="+URLEncoder.encode(filename,"UTF-8"));httpResponse.setContentType("application/octet-stream");httpResponse.setCharacterEncoding("utf-8");OutputStreamoutputStream=httpResponse.getOutputStream();while((length=object.read(buf))>0){outputStream.write(buf,0,length);}outputStream.close();}catch(Exceptionex){LOGGER.info("导出失败:",ex.getMessage());}}}
上传文件
使用postman进行测试
删除文件
下载文件
关于“docker怎么安装minio及实现文件上传、删除、下载”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注主机评测网行业资讯频道,小编每天都会为大家更新不同的知识点。
上一篇:PreparedStatement的setObject作用是什么
输入法切换键是哪个键?输入法切
冬月是哪一个月?冬月是什么意思
个人所得税退税金额怎么算出来的
输入法全角和半角有什么区别?输
a4纸尺寸是多少厘米?a4纸的由来
个人所得税扣除标准?个人所得税
输入法哪个好用?输入法介绍
卡拉OK是哪个国家发明的?卡拉OK
mikutools原神网页版入口链接?m
关机特别慢什么原因?电脑和手机