上传文件"/>
minio安装与上传文件
目录
1.安装(linux)
1.1 下载
1.2 创建目录
1.3 赋予权限
1.4 指定端口号后台启动
2.访问
2.1创建桶
2.2修改权限
3.springboot整合minio
3.1上传文件
1.安装(linux)
1.1 下载
需要翻墙,可以先在本地下载,然后上传到服务器。
1.2 创建目录
mkdir /opt/minio
mkdir /opt/minio/data
将下载好的minio文件上传到minio目录下。
1.3 赋予权限
进入miniomulu
chmod +x minio
1.4 指定端口号后台启动
nohup /opt/minio server --address 0.0.0.0:9000 /opt/minio/data > /opt/minio/minio.log 2>&1 &
如果用的是其他目录,则需要更改一下上面启动命令,将启动命令中的目录改为你自己的目录。
注意开启9000和9001端口号。
2.访问
http://localhost:9000/
服务器ip+端口
账号密码都是:minioadmin
2.1创建桶
2.2修改权限
需要本地访问的话需要改为public,不然会没有权限查看上传文件
3.springboot整合minio
3.1上传文件
yml配置
# minio 参数配置
minio:endpoint: http://xxx:9000accessKey: minioadminsecretKey: minioadminbucketName: test
逻辑
@Autowired
private MinIoClientConfig minIoClientConfig;@Autowired
private MinioClient minioClient;
@Overridepublic DataResult uploadImg(MultipartFile file) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {String url=minIoClientConfig.getEndpoint();String bucketName="test";//获取文件名称String originalFilename = file.getOriginalFilename();//获取文件的类型//使用当前时间重新生成文件名,防止文件名称重复造成文件覆盖Date d = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String fileNewName = System.currentTimeMillis() + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));String fileName = sdf.format(d) + "&&" + fileNewName;//4.构建文件上传路径String filePath = new SimpleDateFormat("yyyy-MM-dd").format(new Date());//5.文件上传的路径String uploadUrl=filePath+"/"+fileName;//6.开始上传InputStream inputStream=null;try {inputStream=file.getInputStream();} catch (IOException e) {e.printStackTrace();}PutObjectArgs putObjectArgs = PutObjectArgs.builder().object(uploadUrl).contentType("image/jpeg").bucket(bucketName).stream(inputStream, inputStream.available(), -1).build();minioClient.putObject(putObjectArgs);return DataResult.success(url+"/"+bucketName+"/"+uploadUrl);}
@PostMapping("/upload")public DataResult uploadImg(MultipartFile file) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {if(file==null||file.isEmpty()||file.getSize()==0){return DataResult.error(ResponseCode.FILE_IS_NOT_NULL.getMsg());}return userService.uploadImg(file);}
之后调用接口的时候会直接返回一个路径,用那个路径就可以访问到自己上传的那个文件了。
代码中还有一个问题,就是我使用@Value来调用yml中已经配置好了的bucketName, 但是却调用不成功,所以我是直接在逻辑代码处赋值桶的名字的。
关于minio其他查询桶,删除桶等功能可以参考:【精选】分布式文件存储系统minio_minio数据库-CSDN博客
更多推荐
minio安装与上传文件
发布评论