windows环境搭建
Linux环境搭建
windows环境搭建
首先给出官网和镜像:
- 中国镜像:
http://dl.minio.org.cn/server/minio/release/windows-amd64/ - 官网:https://docs.minio.io/ https://docs.minio.io/cni
接下来正式介绍
启动minio
通过镜像下载minio.exe后保存至存放的位置,这里保存在C:\develop\minio
打开cmd文件进入C:\develop\minio
执行命令: .\minio.exe server C:\develop\minio
看到以下输出表示成功运行,通过提示的网站链接和用户名/密码可以登录后台管理系统:
然后配置minio,根据自己窗口输出的地址进行登录,成功登录后新建一个桶,并把桶策略改为Read and Write,并且prefix改为*
整合SpringBoot或者SpringCloud
运行成功后接下来配置工程,使得工程能够上传文件到minio、从minio中删除文件以及通过连接访问文件,通常访问的格式是 http://ip:port/桶名称/文件名。
首先pom文件中引入jar包
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>7.0.2</version>
</dependency>
接下来配置yml文件:
projectconfig:
encryptKey: hlkjhlkjhlkjhlkjhlkjhlkj
ip: 192.168.1.132
port: 12002
appid: xxxx
appsecret: xxxx
expire: 3600 #秒
miniourl: http://192.168.1.132:9000
minioaccesskey: minioadmin
miniosecretkey: minioadmin
miniobucketname: test
minioport: 9000
minioip: 192.168.1.132
然后把minioClient集成进SpringBoot:
import io.minio.MinioClient;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class ConfigBean {
private final static Log _logger = LogFactory.getLog(ConfigBean.class);
@Autowired
private YmlProjectConfig _ymlProjectConfig;
//@LoadBalanced
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
@Bean
public MinioClient minioClient() {
try {
MinioClient client = new MinioClient(_ymlProjectConfig.getMiniourl(),
_ymlProjectConfig.getMinioaccesskey(),
_ymlProjectConfig.getMiniosecretkey());
if(client.bucketExists(_ymlProjectConfig.getMiniobucketname())) {
_logger.info("已创建桶");
}else {
client.makeBucket(_ymlProjectConfig.getMiniobucketname());
_logger.info("成功创建桶");
}
//client.setBucketPolicy(_ymlProjectConfig.getMiniobucketname(), policy);
return client;
} catch (Exception e) {
_logger.error("", e);
return null;
}
}
}
接下来给出配置类ymlProjectConfig的源码
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component
@PropertySource("classpath:application.yml")
@ConfigurationProperties(prefix = "projectconfig")
public class YmlProjectConfig {
/**3des的秘钥**/
private String encryptKey;
/**本项目的ip地址**/
private String ip;
/**本项目的端口号**/
private String port;
private String appid;
private String appsecret;
/**模板id**/
private String templateid;
private Long expire;
private String miniourl;
private String minioaccesskey;
private String miniosecretkey;
private String miniobucketname;
private String minioport;
private String minioip;
public String getEncryptKey() {
return encryptKey;
}
public void setEncryptKey(String encryptKey) {
this.encryptKey = encryptKey;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getPort() {
return port;
}
public void setPort(String port) {
this.port = port;
}
public String getAppid() {
return appid;
}
public void setAppid(String appid) {
this.appid = appid;
}
public String getAppsecret() {
return appsecret;
}
public void setAppsecret(String appsecret) {
this.appsecret = appsecret;
}
public String getTemplateid() {
return templateid;
}
public void setTemplateid(String templateid) {
this.templateid = templateid;
}
public Long getExpire() {
return expire;
}
public void setExpire(Long expire) {
this.expire = expire;
}
public String getMiniourl() {
return miniourl;
}
public void setMiniourl(String miniourl) {
this.miniourl = miniourl;
}
public String getMinioaccesskey() {
return minioaccesskey;
}
public void setMinioaccesskey(String minioaccesskey) {
this.minioaccesskey = minioaccesskey;
}
public String getMiniosecretkey() {
return miniosecretkey;
}
public void setMiniosecretkey(String miniosecretkey) {
this.miniosecretkey = miniosecretkey;
}
public String getMiniobucketname() {
return miniobucketname;
}
public void setMiniobucketname(String miniobucketname) {
this.miniobucketname = miniobucketname;
}
public String getMinioport() {
return minioport;
}
public void setMinioport(String minioport) {
this.minioport = minioport;
}
public String getMinioip() {
return minioip;
}
public void setMinioip(String minioip) {
this.minioip = minioip;
}
}
再封装一个service用于上传和下载,切记一定要把header设为对应的格式,因为上传时默认是Content-Type的值是application/octet-stream,这样的通过返回的链接是下载文件,所以要改对应的格式这里的测试文件是jpg格式,所以设置为imgae/jpeg:
@Service
public class MinioService {
private final static Log _logger = LogFactory.getLog(MinioService.class);
@Autowired
private MinioClient _minioClient;
@Autowired
private YmlProjectConfig _ymlProjectConfig;
/**
* 删除文件
* @param fileName
*/
public void deleteFile(String fileName) {
try {
_minioClient.removeObject(_ymlProjectConfig.getMiniobucketname(), fileName);
} catch (Exception e) {
_logger.error("", e);
}
}
/**
* 上传文件
* @param inputStream
* @param fileName
* @return
*/
public String uploadFile(InputStream inputStream, String fileName, String contentType) {
try {
Map<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", contentType);
PutObjectOptions options = new PutObjectOptions(inputStream.available(), -1);
options.setHeaders(headers);
_minioClient.putObject(_ymlProjectConfig.getMiniobucketname(), fileName, inputStream, options);
return _minioClient.getObjectUrl(_ymlProjectConfig.getMiniobucketname(), fileName);
} catch (Exception e) {
_logger.error("", e);
return null;
}
}
}
这里给出常见的格式,常见的媒体格式类型如下:
text/html : HTML格式
text/plain :纯文本格式
text/xml : XML格式
image/gif :gif图片格式
image/jpeg :jpg图片格式
image/png:png图片格式
以application开头的媒体格式类型:
application/xhtml+xml :XHTML格式
application/xml: XML数据格式
application/atom+xml :Atom XML聚合格式
application/json: JSON数据格式
application/pdf:pdf格式
application/msword : Word文档格式
application/octet-stream : 二进制流数据(如常见的文件下载)
application/x-www-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为key/value格式发
送到服务器(表单默认的提交数据的格式)
再搞个单元测试:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = {FIServer.class, MinioServiceTest.class})
public class MinioServiceTest {
@Autowired
private MinioService _minioService;
@Test
public void uploadTest() {
try {
InputStream inputStream = new FileInputStream("C:\\Users\\yang\\Desktop\\yy.jpg");
String url = _minioService.uploadFile(inputStream, "cc.jpg", "image/jpeg");
System.out.println(url);
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void deleteTest() {
try {
_minioService.deleteFile("yy.jpg");
} catch (Exception e) {
e.printStackTrace();
}
}
}
如下图所示,可以保存返回的访问地址
centos 7.6安装Minio
首先选择一个文件目录并创建minio:
cd /usr/project/minio
然后为该目录赋予权限
chmod 777 minio
测试是否可以,那这里是不能后台挂起的,如果退出终端就会强制结束进程,命令后面的路径是指数据存放路径:
./minio server /usr/project/minio/data/
后台挂起允许:
nohup /usr/project/minio/minio server /usr/project/minio/data > /usr/project/minio/minio.log 2>&1 &