首页 > 其他分享 >GridFS上传&下载文件

GridFS上传&下载文件

时间:2023-12-09 20:01:14浏览次数:32  
标签:文件 inputStream 下载 GridFS 上传 store gridFSBucket


 首先我们先说上传文件到GridFs;上传文件到GridFs上相对比较简单,只需要GridFsTemplate的store方法;

        1.上传文件

        如果文件为String类型则我们需要将其转化为inputstream的流对象,然后在调用store方法,如果需要返回字符串类型则可以使用tostring方法;

InputStream inputStream = IOUtils.toInputStream(htmlContent, "utf-8");
//将html文件上传到GridFs上,返回值为上传文件的id
ObjectId store = gridFsTemplate.store(inputStream, cmsPage.getPageName());
//将id转化为string类型
tring htmlFileId = store.toHexString();

GridFS上传&下载文件_java

        2.从GridFS上下载文件

                2.1.我们从GridFS上下载文件需要使用到gridFSBucket因此,我们需要创gridFSBucket并交由spring管理,

@Value("${spring.data.mongodb.database}")
    String db;

    @Bean
    public GridFSBucket getGridsBucket(MongoClient mongoClient){
        MongoDatabase database = mongoClient.getDatabase(db);
        GridFSBucket gridFSBucket = GridFSBuckets.create(database);
        return gridFSBucket;
    }

GridFS上传&下载文件_下载文件_02

                2.2.此时我们就可以正式开始写下载的方法了

              首先,我们需要使用gridFsTemplate的findOne来查找需要下载的文件,然后使用gridFSBucket的openDownloadStream方法来打开下载流,然后使用GridFsResource来操作下载流,通过getTemplate来获得下载流。

        如果你想将下载的文件存在你的电脑上,你也可以创建输出流,通过IOUtils的copy方法来输出;这里我并没有将其存放在本地。

//根据htmlId查询需要下载的对象
        GridFSFile gridFSFile = gridFsTemplate.findOne(Query.query(Criteria.where("_id").is(htmlFileId)));
        //打开下载流
        GridFSDownloadStream downloadStream = gridFSBucket.openDownloadStream(gridFSFile.getObjectId());
        //操作下载流 参数一个是需要下载的对象 另一个是下载流
        GridFsResource gridFsResource = new GridFsResource(gridFSFile,downloadStream);
        //获取下载流
        try {
            InputStream inputStream = gridFsResource.getInputStream();
            return inputStream;
        } catch (IOException e) {
            log.error("下载模板异常{}",e.getMessage());
            e.printStackTrace();
        }

GridFS上传&下载文件_html_03



标签:文件,inputStream,下载,GridFS,上传,store,gridFSBucket
From: https://blog.51cto.com/u_15152703/8751564

相关文章

  • 【Python爬虫案例】抖音下载视频+X-Bogus参数JS逆向分析
    接口分析获取接口地址选择自己感兴趣的抖音博主,本次以“经典老歌【车载U盘】”为例每次请求的页面会有很多接口,需要对接口进行筛选:第一步筛选XHR筛选第二步筛选URL中带有post通过筛选play_add值找到视频的地址分析请求头通过对比两次请求发现只有X-Bogus数值会有变化,m......
  • IntelliJ IDEA下载安装,以及关联gitee
    https://www.jetbrains.com.cn/ 点击下载IntelliJIDEAUltimate旗舰版(收费)IntelliJIDEACommunity社区版(免费)安装根据需要选择选项 在设置中找到插件,安装gitee插件。  ......
  • VMware vCenter Server 7.0 Update 3p 下载 - 集中管理 vSphere 环境
    VMwarevCenterServer7.0Update3p下载-集中管理vSphere环境请访问原文链接:https://sysin.org/blog/vmware-vcenter-7-u3/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgVMwarevCenterServer是一款高级服务器管理软件,提供了一个集中式平台来控制vSphere......
  • Django - 在后台上传文章封面图 - 并在前端页面展示
    需要用到 models.ImageField(),它继承自 models.FileField(), 用ImageField的时候需要安装pillowpipinstallpillow-ihttps://pypi.douban.com/simple/ 首先,进行媒体文件配置:settings中配置:#真正存储图片的文件夹MEDIA_ROOT=os.path.join(BASE_DIR,"media")#......
  • JMeter—从下载到进行压力测试
    JMeter下载与安装下载首先进入JMeter官网点击左侧的“DownloadReleases”,进入红框圈出的网址找到jmeter文件夹进入“binaries”文件夹,注意上面有写需要的Java版本我这里选择了5.5版本下载配置环境变量将bin文件夹添加进系统的环境变量内配置......
  • springboot整合minio上传文件
    (springboot整合minio上传文件)前言上章讲了MinIo的下载安装及创建bucket方法,今天来讲一下在springboot中如何整合运用MinIo进行文件上传功能。springboot整合minio1.引入minio依赖<dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.5......
  • 博客园作为图床,上传图片自动添加图片水印
    专属于博客园的教程。markdown上传图片,添加图片水印,再上传到博客园图床。前言图床有防盗链什么的,处理起来实在是麻烦。既然博客园支持图床,我现在只在博客园写,那就捣鼓了一下。今天是通义千问工程师。菜鸡啥也不会。参考教程首先应参考教程配置,保证博客园图床正确,再对python......
  • upload-labs文件上传通关思路总结
    一、描述顾名思义,文件上传就是利用服务器对上传文件时存在的漏洞来实现上传任意文件,通过自己编写的文件内容让服务器执行文件内容达到可控的目的,但文件的上传往往回有各种各样的过滤,以下将演示upload-labs的关卡:二、关卡1、pass-01尝试把webshell传入到服务器,发现服务器对......
  • Python 使用Paramiko 上传下载远程服务器的文件或文件夹
    Python的Paramiko模块提供了用于SSH连接和文件传输的功能。可以使用Paramiko来上传或下载远程服务器上的文件或文件夹。上传文件要上传文件,可以使用Paramiko的SFTPClient类的put()方法。该方法接受两个参数:本地文件路径和远程文件路径。以下示例将本地文件/tmp/f......
  • CAD2010下载安装教程
    CAD是一款可视化的二维和三维绘图软件,许多命令和操作可以通过菜单选项和工具按钮等多种方式实现,可以用来完成任何设计,包括二维绘图、详细绘制、设计文档和基本三维设计,能够应用于机械设计、工业制图、工程制图、土木建筑、装饰装潢、服装加工等多个行业领域。软件下载:www.ruancang......