精华内容
下载资源
问答
  • minio文件上传
    2021-06-05 02:16:42

    使用第三方组件进行Minio文件上传-Androidhttps://blog.csdn.net/u013243573/article/details/79039351

    https://github.com/aws-amplify/aws-sdk-android/tree/main/aws-android-sdk-s3

    https://github.com/aws-amplify/aws-sdk-android

    https://blog.csdn.net/xu912996973/article/details/115073380minio本身提供的sdk支持的是java,在Java中能正常使用,但是在Android中就会异常,貌似有大神可以自己改依赖,甚至改源码,我这边使用的是aws-android-sdk,很幸运的是第一次尝试就成功了,而且文件上传的时候可以实时展示进度.

    使用第三方aws-android-sdk上传依赖// https://mvnrepository.com/artifact/com.amazonaws/aws-android-sdk-s3

    implementation group: 'com.amazonaws', name: 'aws-android-sdk-s3', version: '2.22.5'

    // https://mvnrepository.com/artifact/com.amazonaws/aws-android-sdk-mobile-client

    implementation group: 'com.amazonaws', name: 'aws-android-sdk-mobile-client', version: '2.22.5'service配置

    文件上传AmazonS3 s3 = new AmazonS3Client(new AWSCredentials() {

    @Override

    public String getAWSAccessKeyId() {

    return NetBaseConfig.MINIO_KEY;//minio的key

    }

    @Override

    public String getAWSSecretKey() {

    return NetBaseConfig.MINIO_SECRET;//minio的密钥

    }

    }, Region.getRegion(Regions.CN_NORTH_1),new ClientConfiguration());

    //服务器地址

    s3.setEndpoint(NetBaseConfig.MINIO_ENDPOINT);//http://ip:端口号

    File file = new File(filePath);//filePath是文件在Android中的地址

    //(桶名,fileName文件在桶中存放地址,文件file)

    s3.putObject(new PutObjectRequest(MINIO_BUCKET_NAME,fileName,file).withGeneralProgressListener(new ProgressListener(){

    int readedbyte = 0;

    @Override

    public void progressChanged(ProgressEvent progressEvent) {

    readedbyte += progressEvent.getBytesTransferred();

    Log.d(TAG, "progressChanged: "+fileName+"文件上传进度:"+((float)(readedbyte / (float)file.length())*100 )+"%");

    //                System.out.println("=========progress=================" + + "============URL=============");

    }

    }));

    //获取文件上传后访问地址url:(http://xxx/地址?密钥)

    //        GeneratePresignedUrlRequest urlRequest = new GeneratePresignedUrlRequest(MINIO_BUCKET_NAME, fileName);

    //        URL url = s3.generatePresignedUrl(urlRequest);

    //        System.out.println("=========URL=================" + url.toString() + "============URL=============");

    更多相关内容
  • Minio文件上传

    2022-07-30 11:02:50
    文件上传

    文件上传

    一,本地上传

    /**
     * @description:最基础的上传
     * @author: Teao
     * @date: 2022/7/8 0:19
     * @param: [formData]
     * @return: com.wangshidai.springboot002.entity.R
     **/
    @PostMapping("/uploadImg")
    public R upload(MultipartFile formData) throws IOException {
        log.info("开始处理文件上传,文件名是{}",formData.getOriginalFilename()); // 打印日志
        // 取到上传的文件的后缀名
        String filename = formData.getOriginalFilename();
        String s = filename.substring(filename.indexOf("."));
        
        formData.transferTo(new File(("d:\\"+UUID.randomUUID()+s)));// 将UUID.randomUUID()+s随机文件名 文件传到本地服务器去
        return new R(200,"上传成功",UUID.randomUUID()+s);
    }
    

    二,Minio上传

    1.导入依赖

    <!--minio-->
    <dependency>
        <groupId>io.minio</groupId>
        <artifactId>minio</artifactId>
        <version>8.0.3</version>
    </dependency>
    

    2.配置application.yml文件

    # minio 参数配置
    minio:
      endpoint: http://192.168.80.188:9090 # minio 服务地址
      accessKey: minioadmin # minio Access key就像用户ID,可以唯一标识你的账户
      secretKey: minioadmin # minio Secret key是你账户的密码
      bucketName: teao-test # minio 桶名称
    

    3.添加配置文件(MinIoClientConfig)

    @Configuration
    public class MinIoClientConfig {
    
        @Value("${minio.endpoint}")
        private String endpoint;
        @Value("${minio.accessKey}")
        private String accessKey;
        @Value("${minio.secretKey}")
        private String secretKey;
    
        /**
         * 注入minio 客户端
         * @return
         */
        @Bean
        public MinioClient minioClient(){
    
            return MinioClient.builder()
                    .endpoint(endpoint)
                    .credentials(accessKey, secretKey)
                    .build();
        }
    }
    

    4.使用

    @Value("${minio.bucketName}")
    private String bucketName;
    
    @Resource
    private MinioClient minioClient;
    
    /**
     * @description:Minio上传
     * @author: Teao
     * @date: 2022/7/8 8:14
     * @param: [formData]
     * @return: com.wangshidai.springboot002.entity.R
     **/
    @PostMapping("/uploadImg")
    public R upload(MultipartFile formData) throws IOException {
        log.info("开始处理文件上传,文件名是{}",formData.getOriginalFilename());
        
        // 生成上传随机的文件名
        String filename = formData.getOriginalFilename();
        String s = filename.substring(filename.indexOf("."));
        filename = UUID.randomUUID()+s;
        
        try {
            PutObjectArgs objectArgs = PutObjectArgs.builder().object(filename)
                    .bucket(bucketName)
                    .contentType(formData.getContentType())
                    .stream(formData.getInputStream(),formData.getSize(),-1).build();
    
            minioClient.putObject(objectArgs);  // 需要注入进来 @Resource private MinioClient minioClient;
            // 拼接将要返回的字符串
            String url = "http://60.205.214.35:9090/wangshidai-test/"+filename;
            return new R(200,"上传成功",url);
        } catch (Exception e) {
            e.printStackTrace();
            return new R(500,"上传失败",null);
        }
    }
    
    展开全文
  • minio文件上传

    2021-04-15 11:56:05
    minio文件上传工具类 package net.dgcreate.common.utils; import io.minio.MinioClient; import io.minio.PutObjectOptions; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.commons....

    minio文件上传工具类

    package net.dgcreate.common.utils;
    
    import io.minio.MinioClient;
    import io.minio.PutObjectOptions;
    import lombok.Data;
    import lombok.extern.slf4j.Slf4j;
    import org.apache.commons.lang3.StringUtils;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Component;
    import org.springframework.web.multipart.MultipartFile;
    
    import javax.annotation.Resource;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    
    /**
     * 信息描述: minio文件上传工具类
     * @params
     * @returnType
     * @date 2021/3/22
     */
    @Slf4j
    @Component
    public class FlieUtlis {
    
    
        //注入minio链接
        @Value("${minio.endpoint}")
        private  String endpoint;
        //注入minio账号
        @Value("${minio.accesskey}")
        private  String accesskey;
        //注入minio密码
        @Value("${minio.secretKey}")
        private  String secretKey;
    
        //注入minio桶名称
        @Value("${minio.bucketname}")
        private  String culturalfiles;
        /**
         * 信息描述: 多文件上传
         * UserName jinLong
         * @params []
         * @returnType java.util.Map<java.lang.String, java.lang.Object>
         * @date 2021/3/22
         */
        public  List FileUploader(MultipartFile[] files) {
            MinioClient minioClient = null;
            try {
                InputStream inputStream = null;
                // 使用MinIO服务的URL,端口,Access key和Secret key创建一个MinioClient对象
                minioClient = new MinioClient(endpoint, accesskey,secretKey);
                // 检查存储桶是否已经存在
                boolean isExist = minioClient.bucketExists(culturalfiles);
                if (isExist == false) {
                    // 创建一个名为asiatrip的存储桶,用于存储照片的zip文件。
                    minioClient.makeBucket(culturalfiles);
                }
                //判断文件是否为空
                if (files == null || files.length < 0) {
                    throw new Exception("上传文件不能为空");
                }
                String flieName = null;
                List<String> uRlList = new ArrayList<>();
                //遍历文件
                for (int i = 0; i < files.length; i++) {
                    String originalFilename = files[i].getOriginalFilename();
                    //文件名称是否存在
                    if (!StringUtils.isBlank(originalFilename)) {
                        long longTime = System.currentTimeMillis();
                        String suffix = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
                        inputStream = files[i].getInputStream();
                        //文件最终名称
                        flieName = longTime + "." + suffix;
                        uRlList.add(minioClient.getObjectUrl(culturalfiles, flieName));
                        //文件上传
                        minioClient.putObject(culturalfiles, flieName, inputStream, new PutObjectOptions(inputStream.available(), -1));
                    }
                }
                inputStream.close();
                //返回路径集合
                return uRlList;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    
    
        /**
         * 信息描述: 删除桶中多个文件
         * UserName jinLong
         * @params [fileName]
         * @returnType net.dgcreate.common.utils.ResultJsonBean
         * @date 2021/3/26
         */
        public  Boolean delete(String fileNames) {
            MinioClient minioClient = null;
            try {
                //初始化minio对象
                minioClient = new MinioClient(endpoint, accesskey,secretKey);
                String strip = StringUtils.strip(fileNames, "[]");
                String[] splitNum = strip.split(",");
                for (int i=0;i<splitNum.length;i++){
                    String newFlieName= splitNum[i];
                    String[] fileUrl=newFlieName.split("/");
                    String url=fileUrl[fileUrl.length-1];
                    //多文件删除minio里面的文件
                    minioClient.removeObject(culturalfiles, url);
                }
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
            return true;
        }
    
    
    }
    
    

    Controller

        private ResultJsonBean insertCultural(@RequestParam("files") MultipartFile[] figureUrl){
            return figureService.insertCultural(figureUrl,figureVo);
        }
    

    Service

    	//上传文件
        @Resource
        private FlieUtlis flieUtlis;//minio文件上传工具类
        
    
    	
     @Override
        public ResultJsonBean insertCultural(MultipartFile[] figureUrl) {
    	        try {
                List list =flieUtlis.FileUploader(figureUrl);//上传头像文件
            } catch (Exception e) {
                e.printStackTrace();
                return new ResultJsonBean("添加文件失败");
            }
    
    }
    

    文件删除如上:
    flieUtlis.delete(figureUrl);

    记得添加minio配置

    #minio配置
    minio:
      endpoint: minio地址
      accesskey: minioadmin
      secretKey: minioadmin
      bucketname: culturalfiles
    
    展开全文
  • Java分布式文件对象存储Minio框架并发上传、下载、合并、删除等操作示例Demo完整版,可用于生产环境开发。
  • MinIo文件上传)预备知识点雷迪斯昂首阔步弹簧靴MinIO SpringTask本仓库关注收藏功能演示MinIO上传文件SpringBoot上传文件环境建造创建Docker容器docker pull redis:4docker run --name redis -p 6379:6379 \-d ...
  • minio文件储存服务

    2020-12-15 11:46:55
    minio 兼容Amason的S3分布式对象存储项目,采用Golang实现,客户端支持Java,Python,Javacript, Golang语言。Minio可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在...
  • Minio 上传下载文件除了需要 Bucket 还需要指定文件名,其中文件名可以是一个包含 Path 的文件名,例如 fileName 可以是 1/2/3/4/5.jpg 也可以是 5.jpg。其 API 有: // 上传 minioClient.putObject(bucket, ...

    Minio 上传下载文件除了需要 Bucket 还需要指定文件名,其中文件名可以是一个包含 Path 的文件名,例如 fileName 可以是 1/2/3/4/5.jpg 也可以是 5.jpg。其 API 有:

    // 上传
    minioClient.putObject(bucket, fileName, inputStream, file.length(), contentType);
    
    // 下载
    minioClient.getObject(bucket, fileName);
    

    最近同事老是讨论 Minio 上传下载路径规划,我就比较好奇多层 Path 是否对性能有影响,于是本地测试了一下多层 Path,和单层 Path 是否对 Minio 上传下载有性能影响。简单编写了如下程序。使用一张 3KB 的图片进行上传下载,程序主要区别点在于是否是多层 Path 的控制,其中多层 Path 用:1/2/3/4/5.jpg,单层 Path 用: 5.jpg

    public static void main(String[] args) throws Exception {
            String endPoint = "http://192.168.38.68:9000";
            String userName = "minio";
            String password = "minio";
            String bucket = "test";
            String fileName = "C:\\Users\\14345\\Pictures\\3_qq_24598601.jpg"; // 3KB
            String mulPath = "1/2/3/4/5.jpg";
            String singlePath = "5.jpg";
            String contentType = "image/jpg";
            int number = 200;
    
            MinioClient minioClient = new MinioClient(endPoint, userName, password);
            File file = new File(fileName);
    
            long writeTime = 0;
            int count = number;
            while (count-- > 0) {
                try (InputStream inputStream = new BufferedInputStream(new FileInputStream(file))) {
                    long writeStartTime = System.currentTimeMillis();
                    minioClient.putObject(bucket, mulPath, inputStream, file.length(), contentType);
                    long writeEndTime = System.currentTimeMillis();
                    writeTime += writeEndTime - writeStartTime;
                } catch (Exception e) {
                    LOGGER.error("upload error!", e);
                }
            }
            System.out.println("多层上传文件" + number + "次耗时:" + writeTime + " ms");
    
            writeTime = 0;
            count = number;
            while (count-- > 0) {
                try (InputStream inputStream = new BufferedInputStream(new FileInputStream(file))) {
                    long writeStartTime = System.currentTimeMillis();
                    minioClient.putObject(bucket, singlePath, inputStream, file.length(), contentType);
                    long writeEndTime = System.currentTimeMillis();
                    writeTime += writeEndTime - writeStartTime;
                } catch (Exception e) {
                    LOGGER.error("upload error!", e);
                }
            }
            System.out.println("单层上传文件" + number + "次耗时:" + writeTime + " ms");
    
            InputStream inputStream = null;
            count = number;
            long readStartTime = System.currentTimeMillis();
            while (count-- > 0) {
                inputStream = minioClient.getObject(bucket, mulPath);
            }
            long readEndTime = System.currentTimeMillis();
            inputStream = null;
            System.out.println("多层读取文件" + number + "次耗时:" + (readEndTime - readStartTime) + " ms");
    
            count = number;
            readStartTime = System.currentTimeMillis();
            while (count-- > 0) {
                inputStream = minioClient.getObject(bucket, singlePath);
            }
            readEndTime = System.currentTimeMillis();
            inputStream = null;
            System.out.println("单层读取文件" + number + "次耗时:" + (readEndTime - readStartTime) + " ms");
    }
    

    先多次执行后,再通过修改 number 变量多次执行程序,输出结果如下:

    第一次执行程序:
    多层上传文件10次耗时:1229 ms
    单层上传文件10次耗时:761 ms
    多层读取文件10次耗时:416 ms
    单层读取文件10次耗时:426 ms
    
    第二次执行程序:
    多层上传文件10次耗时:1377 ms
    单层上传文件10次耗时:731 ms
    多层读取文件10次耗时:394 ms
    单层读取文件10次耗时:424 ms
    
    第三次执行程序:
    多层上传文件10次耗时:1161 ms
    单层上传文件10次耗时:924 ms
    多层读取文件10次耗时:414 ms
    单层读取文件10次耗时:440 ms
    
    第四次执行程序:
    多层上传文件100次耗时:9645 ms
    单层上传文件100次耗时:8434 ms
    多层读取文件100次耗时:4078 ms
    单层读取文件100次耗时:4037 ms
    
    第五次执行程序:
    多层上传文件100次耗时:9120 ms
    单层上传文件100次耗时:7706 ms
    多层读取文件100次耗时:4227 ms
    单层读取文件100次耗时:4198 ms
    
    第六次执行程序:
    多层上传文件100次耗时:9293 ms
    单层上传文件100次耗时:7732 ms
    多层读取文件100次耗时:4179 ms
    单层读取文件100次耗时:4144 ms
    
    第七次执行程序:
    多层上传文件200次耗时:18375 ms
    单层上传文件200次耗时:15072 ms
    多层读取文件200次耗时:8278 ms
    单层读取文件200次耗时:8054 ms
    
    第八次执行程序:
    多层上传文件200次耗时:18771 ms
    单层上传文件200次耗时:15892 ms
    多层读取文件200次耗时:8309 ms
    单层读取文件200次耗时:8343 ms
    
    第九次执行程序:
    多层上传文件200次耗时:18746 ms
    单层上传文件200次耗时:17699 ms
    多层读取文件200次耗时:8324 ms
    单层读取文件200次耗时:8145 ms
    

    对应上述结果绘制了如下统计表:
    在这里插入图片描述
    通过对统计表分析得出下图(不同 Path 层下写文件耗时统计图):
    在这里插入图片描述
    通过对统计表分析得出下图(不同 Path 层下读文件耗时统计图):
    在这里插入图片描述
    从上可以看出,在读写的文件大小相同时,Path 层数对 Minio 写文件是有一定影响的,但影响不大,并且随着上传文件的次数的增长上传耗时也会随之增长,而对与 Minio 读文件基本是无影响的。

    进一步分析同一 Path 层数下读写文件耗时统计图,如下所示:
    在这里插入图片描述
    在这里插入图片描述
    通过上述分析的同一 Path 层数下读写文件耗时统计图可以看出在相同文件大小和同一 Path 层数的前提下,读写次数对读写的性能的基本上是线性递增的。

    综上所述,通过从 Minio 上传文件或下载文件,在文件大小相同的情况下,在上传文件时,多层 Path 设计相对于单层 Path 对性能有一定影响,在 Path 层数一定的前提下是呈线性递增的;而在下载文件时,多层 Path 和 单层 Path 对性能的影响基本一样。

    展开全文
  • minio文件上传的学习
  • minio上传下载删除
  • Springboot整合Minio文件上传下载

    千次阅读 2022-04-21 19:25:43
    创建一个文件minio mkdir minio cd minio --进入到文件 执行下载命令 wget https://dl.minio.io/server/minio/release/linux-amd64/minio 创建一个日志文件 ,方便查看日志 touch minio.log 点击下载好之后 执行...
  • java实现MinIO文件上传,并将视频文件截图,将视频封面及视频通过MinIo上传到服务器中配置完毕,接下来开始代码编写。说明 总过程分为两步。 1.配置MinIO的环境。 2.代码编写。 下面开始配置MinIO的环境。 (1)导入...
  • 1. MinIO形式文件上传: 首先需要有MinIO服务器,这里略过。 @PostMapping("file/upload") public String MinIOUpload(MultipartFile file) { if (file.isEmpty() || file.getSize() == 0) { return "文件为...
  • minio原本SDK仅支持整文件上传,分片/分段上传支持不足,本项目完整支持分片/分段上传; 项目源码已经完整实现,小白可以直接抄; 本项目仅支持C# core,不支持JAVA等项目
  • Java MinIO文件上传,下载和删除

    千次阅读 2020-07-31 16:36:24
    1.先导入maven依赖( minio版本不能太低不然运行时会出现:org.xmlpull.v1.XmlPullParserException 错误) <dependency> <groupId>io.minio</groupId> <artifactId>minio</...
  • minio 实现文件上传

    千次阅读 2022-01-25 16:16:56
    minio 实现文件上传 1.导入依赖 <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.3.4</version> </dependency> 2....
  • springboot整合minio上传文件
  • 主要介绍了基于Java写minio客户端实现上传下载文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • springboot集成minio实现的文件服务组件(含Vue前端源码) Demo程序,文件支持分片上传
  • POM <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.2.1</version> </dependency> pe
  • SpringBoot 整合MinIO并实现文件上传 1、依赖 <!-- https://mvnrepository.com/artifact/io.minio/minio --> <dependency> <groupId>io.minio</groupId> <artifactId>minio</...
  • springBoot项目上传文件minio上,获取到文件url,直接在浏览器访问url(即预览文件)时,文件格式为txt时,会出现文件乱码问题。上传txt文件前,创建fileUtil工具类:手动设置txt文件编码格式后再上传。txt文件...
  • 由于fastdfs的文件不能直接迁移至minio中使用,文件链接地址存储在数据库中,格式也大不相同,只能进行逐步手动迁移的思路进行。 (1)对于有时效性的文件,比如要求存在3个月,半年的这种文件,可以不进行迁移,...
  • 这里写自定义目录标题欢迎使用Markdown编辑器文件上传(暂时有点问题,弄好后更新)文件下载 欢迎使用Markdown编辑器 文件上传(暂时有点问题,弄好后更新) 在这里插入代码片 文件下载 [HttpPost, Route("putFileTest...
  • SpringBoot之Minio上传下载文件

    千次阅读 2022-04-13 14:51:29
    SpringBoot之Minio上传下载文件
  • Java实现Minio上传下载文件

    千次阅读 2022-02-09 15:15:06
    io.minio</groupId> <artifactId>minio</artifactId> <version>3.0.10</version> </dependency> 2.配置minio服务端路径及登录秘钥 minio: url: http://localhost:9000 ...
  • (2)本文章是在spring boot中集成minio,实现文件上传,当然单纯的java环境也可以实现文件上传功能。 (3)我的环境是: java 1.8.0_131 maven 3.3.9 spring boot 2.2.0 minio文档 英文:https://docs.min.io/ 中文:...
  • minio上传文件报错

    2022-09-03 16:13:13
    minio上传文件报错

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,836
精华内容 1,534
关键字:

minio文件上传