当前位置: 首页 > news >正文

网站建设几点关门零食公司建立网站的原因

网站建设几点关门,零食公司建立网站的原因,seo好学吗入门怎么学,网站建设时间影响因素minio docker spring boot实现文件上传与下载 1.在linux上安装并启动docker2.在docker中拉取minio并启动3.Spring Boot 整合 minio4.测试 minio 文件上传、下载及图片预览等功能 1.在linux上安装并启动docker 检查linux内核#xff0c;必须是3.10以上 uname ‐r安装docker… minio docker spring boot实现文件上传与下载 1.在linux上安装并启动docker2.在docker中拉取minio并启动3.Spring Boot 整合 minio4.测试 minio 文件上传、下载及图片预览等功能 1.在linux上安装并启动docker 检查linux内核必须是3.10以上 uname ‐r安装docker yum install docker启动docker systemctl start docker2.在docker中拉取minio并启动 搜索镜像 docker search minio拉取镜像 docker pull minio/minio启动minio docker run -p 9000:9000 -p 9090:9090 --name minio \-d --restartalways \-e MINIO_ACCESS_KEYvinci \-e MINIO_SECRET_KEY123456\-v /usr/local/minio/data:/data \-v /usr/local/minio/config:/root/.minio \minio/minio server /data --console-address :9000 --address :9090-p: 指定端口映射格式为主机端口:容器端口 (这里注意要映射两个否则API会访问不到) -e “MINIO_ROOT_USERvinci” minio用户名 -e MINIO_SECRET_KEY123456 minio 密码 -d: 后台运行容器并返回容器ID -v: 绑定一个卷 这里可以看到minio已经在docker里启动起来了 接下来我们可以通过以下命令来查看 minio console和minio api 访问端口 docker logs minio访问minio控制台 在此步骤前记得开放端口号 我们接下来可以使用密码和账号登录minio控制台了 3.Spring Boot 整合 minio 在此之前我们可以先通过控制台来创建一个bucket 集成minio dependencygroupIdio.minio/groupIdartifactIdminio/artifactIdversion8.4.0/version /dependency编写minio配置类 /*** package: com.vinci.minio.config* className: MinioConfig* author: Vinci* description: minio配置类* date: 2023/10/27 13:10*/ Data Configuration ConfigurationProperties(prefix minio) public class MinioConfig {private String endpoint;private String accessKey;private String secretKey;private String bucketName;Beanpublic MinioClient minioClient(){return MinioClient.builder().endpoint(endpoint).credentials(accessKey, secretKey).build();}}在application.properties中添加以下配置 minio.endpointhttp://108.13.21.28:9090/ minio.bucket-nameimages minio.access-keyxxxxx minio.secret-keyxxxxx注意 minio.endpoint 是minio API地址不是控制台地址 minio.bucket-name 是 bucket的名称 minio.access-key 是用户名 minio.secret-key是密码 编写minio工具类 package com.vinci.minio.utils;import com.vinci.minio.config.MinioConfig; import io.minio.*; import io.minio.http.Method; import io.minio.messages.Bucket; import io.minio.messages.Item; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.util.FastByteArrayOutputStream; import org.springframework.web.multipart.MultipartFile;import javax.annotation.Resource; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.UUID;/*** description: minio工具类* author: Vinci* date: 2023/10/27 13:23**/ Component Slf4j public class MinioUtil {Resourceprivate MinioConfig config;Resourceprivate MinioClient minioClient;/*** description: 查看存储bucket是否存在* author: Vinci* date: 2023/10/27 13:24* param bucketName 要查看的bucket名称* return 存在即返回true**/public Boolean bucketExists(String bucketName) {try {return minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());} catch (Exception e) {log.error(发现异常,e);return false;}}/*** description: 创建存储bucket* author: Vinci* date: 2023/10/27 13:24* param bucketName 要创建的bucket名称* return 创建成功即返回true**/public Boolean makeBucket(String bucketName) {try {minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());return true;} catch (Exception e) {log.error(发现异常,e);return false;}}/*** description: 删除存储bucket* author: Vinci* date: 2023/10/27 13:24* param bucketName 要删除的bucket名称* return 删除成功即返回true**/public Boolean removeBucket(String bucketName) {try {minioClient.removeBucket(RemoveBucketArgs.builder().bucket(bucketName).build());return true;} catch (Exception e) {log.error(发现异常,e);return false;}}/*** description: 获取全部bucket* author: Vinci* date: 2023/10/27 13:24* return 返回bucket结果集**/public ListBucket getAllBuckets() {try {return minioClient.listBuckets();} catch (Exception e) {log.error(发现异常,e);return null;}}/*** description: 文件上传* author: Vinci* date: 2023/10/27 13:24* param file 表单上传的文件* return 返回文件上传的路径**/public String upload(MultipartFile file) {String originalFilename file.getOriginalFilename();if (originalFilename null || originalFilename.isEmpty()){throw new RuntimeException();}String fileName UUID.randomUUID() originalFilename.substring(originalFilename.lastIndexOf(.));String objectName new SimpleDateFormat(yyyyMM).format(new Date()) / fileName;try {PutObjectArgs objectArgs PutObjectArgs.builder().bucket(config.getBucketName()).object(objectName).stream(file.getInputStream(), file.getSize(), -1).contentType(file.getContentType()).build();minioClient.putObject(objectArgs);return objectName;} catch (Exception e) {log.error(发现异常,e);return null;}}/*** description: 预览图片* author: Vinci* date: 2023/10/27 13:24* param fileName 文件在bucket中的全路径* return 返回文件的浏览路径**/public String preview(String fileName){// 查看文件地址GetPresignedObjectUrlArgs build GetPresignedObjectUrlArgs.builder().bucket(config.getBucketName()).object(fileName).method(Method.GET).build();try {return minioClient.getPresignedObjectUrl(build);} catch (Exception e) {log.error(发现异常,e);return null;}}/*** description: 文件下载* author: Vinci* date: 2023/10/27 13:24* param fileName 文件在bucket中的全路径**/public void download(String fileName, HttpServletResponse res) {GetObjectArgs objectArgs GetObjectArgs.builder().bucket(config.getBucketName()).object(fileName).build();try (GetObjectResponse response minioClient.getObject(objectArgs)){byte[] buf new byte[1024];int len;try (FastByteArrayOutputStream os new FastByteArrayOutputStream()){while ((lenresponse.read(buf))!-1){os.write(buf,0,len);}os.flush();byte[] bytes os.toByteArray();res.setCharacterEncoding(utf-8);res.setContentType(application/force-download);res.addHeader(Content-Disposition, inline;fileName fileName);try (ServletOutputStream stream res.getOutputStream()){stream.write(bytes);stream.flush();}}} catch (Exception e) {log.error(发现异常,e);}}/*** description: 查看文件对象* author: Vinci* date: 2023/10/27 13:24* return 存储bucket内文件对象信息**/public ListItem listObjects() {IterableResultItem results minioClient.listObjects(ListObjectsArgs.builder().bucket(config.getBucketName()).build());ListItem items new ArrayList();try {for (ResultItem result : results) {items.add(result.get());}return items;} catch (Exception e) {log.error(发现异常,e);return null;}}/*** description: 删除文件信息* author: Vinci* date: 2023/10/27 13:24* return 删除成功则返回true**/public boolean remove(String fileName){try {minioClient.removeObject(RemoveObjectArgs.builder().bucket(config.getBucketName()).object(fileName).build());return true;}catch (Exception e){log.error(发现异常,e);return false;}}} 4.测试 minio 文件上传、下载及图片预览等功能 编写controller通过接口的方式来测试minio功能 package com.vinci.minio.controller;import com.vinci.minio.utils.MinioUtil; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile;import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse;/*** package: com.vinci.minio.controller* className: TestMinioController* author: Vinci* description: 测试minio* date: 2023/10/27 13:48*/ Controller RequestMapping(value /minio) public class TestMinioController {Resourceprivate MinioUtil minioUtil;/*** description: 文件上传测试* author: Vinci* date: 2023/10/27 13:48**/ResponseBodyPostMapping(/upload)public String fileUpload(MultipartFile file) {return minioUtil.upload(file);}/*** description: 文件下载测试* author: Vinci* date: 2023/10/27 13:51**/ResponseBodyGetMapping(/download)public String fileDownload(String fileName, HttpServletResponse response){minioUtil.download(fileName,response);return success;}/*** description: 图片预览* author: Vinci* date: 2023/10/27 13:53**/GetMapping(/preview)public String imagePreview(String fileName){return minioUtil.preview(fileName);}} 测试文件上传 使用postMan来调用文件上传的接口 我们返回控制台可以看到文件已经上传上去了 测试文件下载 我们借助postman工具点击发送并下载可以看到文件下载成功了 图片在线预览 我们同样借助postman工具发送请求我们可以看到返回了图片的在线浏览地址点击即可在线浏览图片 以上便是minio 整合springboot的全部流程了感谢阅读 SpringBoot案例地址https://gitee.com/vinci99/springboot-minio-test.git
http://www.eeditor.cn/news/125447/

相关文章:

  • 工程建设网站怎么提交潮流印花图案设计网站
  • 网站建设与维护课程总结唯品会网站页面设计
  • 做yield网站多少钱骨干校建设专题网站
  • 衡阳网站定制google官方版下载
  • 四川住房城乡建设厅网站电话wordpress 需要授权吗
  • 网站建设 软件开发的公司哪家好wordpress 分栏
  • 网络服务商官方网站项目营销推广方案
  • 企业网站建设方案服务微信群二维码推广平台
  • 一站式手机网站制作大学生创新创业大赛策划书
  • 专门学设计的网站wordpress 广告拦截插件
  • 怎么在网站标头做图标网站设计导航栏高度
  • 建行网上银行登录入口官网seo排名优化方式
  • 网站seo优化的重要性百度网站收录更新
  • 为何网站建设公司报价不同WordPress京东淘宝主题
  • 郑州做网站公司yooker重庆是哪个省划分出来的
  • php做的直播网站电视直播网站开发
  • 专做定制的网站wordpress首页自定义小工具
  • 舆情分析报告舟山网站建设优化
  • 做服务网站要多少钱app推广营销公司
  • 青岛教育平台网站建设建设工程信息网官网重庆
  • 电子商务网站建设移动电商开发围上如何做快递查单网站
  • 网站平台构建网页设计实训总结报告3000字
  • 深圳做网站推荐哪家公司好不动产登记门户网站建设方案
  • 企业网站能自己建设吗做网站大概要多少钱
  • 做网站图标的软件网站开发的方式
  • 自建个人网站四川广汇建设有限公司网站
  • 网站倒计时代码在国外做网站推广
  • 网站制作关键词seo一个关键词多少钱
  • 合肥网站建怎样推广海外网站
  • 聊城网站案例中企动力工作两个月感受