MiNIO 目录MinIO概念MinIO下载安装启动下载安装启动 MinIO实现上传文件导入maven坐标在application文件添加配置实现代码 目录 Minio概念
访问官网:https://docs.min.io/
进入官网点击右上角Download
点击Windows下载服务端
将MinIO.exe 拷贝到自己的目录下去,并创建一个data目录
通过命令行启动Minio :
minio server ./data
启动完成后,可以看到访问的路径:Http://127.0.0.1:9000
使用提供的账号密码进行登录
账号:minioadmin
密码:minioadmin
io.minio minio 8.4.3
# MinIO配置minio: endpoint: 127.0.0.1 port: 9000 accessKey: minioadmin secreTKEy: minioadmin secure: false bucketName: "demo" configDir: "/data/excel"
@Data@Component@ConfigurationProperties(prefix = "minio")public class Minioconfig { private final static String HTTP = "http://"; //endPoint是一个URL,域名,IPv4或者IPv6地址 private String endpoint; //tcp/IP端口号 private int port; //accessKey类似于用户ID,用于唯一标识你的账户 private String accessKey; //secretKey是你账户的密码 private String secretKey; //如果是true,则用的是https而不是http,默认值是true private Boolean secure; //默认存储桶 private String bucketName;}
public class ajaxResult extends HashMap{ private static final long serialVersionUID = 1L; public static final String CODE_TAG = "code"; public static final String MSG_TAG = "msg"; public static final String DATA_TAG = "data"; public AjaxResult() { } public AjaxResult(int code, String msg) { super.put(CODE_TAG, code); super.put(MSG_TAG, msg); } public AjaxResult(int code, String msg, Object data) { super.put(CODE_TAG, code); super.put(MSG_TAG, msg); if (StringUtils.isNotNull(data)) { super.put(DATA_TAG, data); } } public static AjaxResult success() { return AjaxResult.success("操作成功"); } public static AjaxResult success(Object data) { return AjaxResult.success("操作成功", data); } public static AjaxResult success(String msg) { return AjaxResult.success(msg, null); } public static AjaxResult success(String msg, Object data) { return new AjaxResult(HttpStatus.SUCCESS, msg, data); } public static AjaxResult error() { return AjaxResult.error("操作失败"); } public static AjaxResult error(String msg) { return AjaxResult.error(msg, null); } public static AjaxResult error(String msg, Object data) { return new AjaxResult(HttpStatus.ERROR, msg, data); } public static AjaxResult error(int code, String msg) { return new AjaxResult(code, msg, null); }}
@RestControllerpublic class CommonController extends BaseController { private static final Logger log = LoggerFactory.getLogger(CommonController.class); @Autowired private ISysFileService fileService; @PostMapping("/common/upload") public AjaxResult uploadFile(MultipartFile file){ try{ // 上传文件路径 return fileService.upload(file); }catch (Exception e){ return AjaxResult.error(e.getMessage()); } }}
public interface ISysFileService {AjaxResult upload(MultipartFile file);}
@Service@Slf4jpublic class SysFileServiceImpl implements ISysFileService{@AutowiredMinioConfig minioConfig;@Overridepublic AjaxResult upload(MultipartFile file) {InputStream inputStream = null;//创建Minio的连接对象MinioClient minioClient = getClient();//获取存储桶String bucketName = minioConfig.getBucketName();try {inputStream = file.getInputStream();// Make bucketName bucket if not exist.boolean found =minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());if (!found) {// Make a new bucket called bucketName.minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());} else {log.info("Bucket " +"["+bucketName+ "]"+" already exists.");}//Uploads given stream as object in bucket.String oldFileName = file.getOriginalFilename();String objectName = new SimpleDateFORMat("yyyy/MM/dd/").format(new Date())+IdUtils.simpleUUID()+oldFileName.substring(oldFileName.lastIndexOf("."));minioClient.putObject(PutObjectArgs.builder().bucket(bucketName).object(objectName).stream(inputStream, file.getSize(), -1).contentType(file.getContentType()).build());AjaxResult ajax = AjaxResult.success();ajax.put("fileName", "/"+bucketName+"/"+objectName);ajax.put("url", "http://"+minioConfig.getEndpoint()+":"+minioConfig.getPort()+"/"+minioConfig.getBucketName()+"/"+objectName);return ajax;}catch(Exception e){e.printStackTrace();return AjaxResult.error("上传失败");}finally {//防止内存泄漏if (inputStream != null) {try {inputStream.close(); // 关闭流} catch (IOException e) {log.debug("inputStream close IOException:" + e.getMessage());}}}}private MinioClient getClient(){MinioClient minioClient =MinioClient.builder().endpoint("http://"+minioConfig.getEndpoint()+":"+ minioConfig.getPort()).credentials(minioConfig.getAccessKey(),minioConfig.getSecretKey()).build();return minioClient;}}
响应数据格式
{"msg":"操作成功","fileName":"/demo/2022/10/14/efcb6266efba42a4b35344181964be36.pdf","code":200,"url":"http://127.0.0.1:9000/demo/2022/10/14/efcb6266efba42a4b35344181964be36.pdf"}
到此,上传文件到MinIO服务器就完成了。
来源地址:https://blog.csdn.net/m0_52388228/article/details/127319556
--结束END--
本文标题: MinIO实现文件上传存储
本文链接: https://www.lsjlt.com/news/391375.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-03
2024-04-03
2024-04-01
2024-01-21
2024-01-21
2024-01-21
2024-01-21
2023-12-23
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0