`

Mongodb GridFS图片文件存储解决方案

 
阅读更多

    Mongodb GridFS图片文件存储解决方案

    之前解决方案是接收图片数据后,将图片直接存储到盘阵,然后通过Apache做服务器,将图片信息存储到数据库,并且存储一个Apache的访问路径。

    目前需要后台服务存储图片,将图片存储到MongoDB集群中,然后通过Nginx中的nginx-gridfs模块进行访问,在浏览器中通过url访问,效果与Apache访问本地文件一样。

     本方案的内容比较基础,以后会有深入了解和优化,敬请期待!

一、安装MongoDB

    (1)安装MongoDB

      进入计划安装目录:cd  /usr/local/ 

     下载mongodb-linux-x86_64-2.6.1.tgz  https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.1.tgz

      解压:tar -zxf mongodb-linux-x86_64-2.6.1.tgz

      改名:mv mongodb-linux-x86_64-2.6.1 mongodb2.6.1

      创建数据目录和日志目录: mkdir -p mongodb2.6.1/mongodb_data/mongodb_db

                                                 mkdir -p mongodb2.6.1/mongodb_data/mongodb_logs

     启动MongoDB: 进入MongoDB bin目录执行以下命令:

      cd /usr/local/mongodb2.6.1/bin

      ./mongod --dbpath=/usr/local/mongodb2.6.1/mongodb_data/mongodb_db/ --logpath=/usr/local/mongodb2.6.1/mongodb_data/mongodb_log/mongodb.log --logappend &

      检查启动状态:

      ps -ef | grep mongo 看到刚才启动命令就说明在运行了

      通过 netstat -ant | grep 27017 还能查看端口静态状态

[root@zjhl1 opt]# ps -ef | grep mongo
root     16350 10593  1 15:40 pts/1    00:01:11 ./mongod --dbpath=/opt/mongodb2.6.1/mongodb_data/mongodb_db/ --logpath=/opt/mongodb2.6.1/mongodb_data/mongodb_logs/mongodb.log --logappend
root     19027 10593  0 17:21 pts/1    00:00:00 grep mongo
[root@zjhl1 opt]# 
[root@zjhl1 opt]# netstat -ant | grep 27017
tcp        0      0 0.0.0.0:27017               0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:27017             127.0.0.1:47686             ESTABLISHED 
tcp        0      0 127.0.0.1:47686             127.0.0.1:27017             ESTABLISHED 
tcp        0      0 192.168.1.111:27017         192.168.1.100:53462         ESTABLISHED 
[root@zjhl1 opt]# 

 

    (2)安装MongoVUE客户端

      MongoVUE是类似oracle中PL/SQL Developer 或者MySql中SQLyog的图形化客户端。

      目前是收费的,下载后Installer.msi后直接安装就行。至于授权问题自己百度解决。

      此工具的功能很多,这里不展开讲,有需要的自己百度。

    

      

 

二、安装Nginx

    (1)下载nginx-gridfs插件

      网上有传出使用git安装此插件的,这个比较麻烦,我在文章的附件中留了下载包。本人测试可用。

      下载后还要下载mongo的c语言驱动包,这个也可以在附件中下载。

      下载完成后进行解压:tar -zxf nginx-gridfs.tar.gz

                                         tar -zxf mongo-c-driver-0.94.2.tar.gz

       解压完成后将驱动包内容全部拷贝到nginx-gridfs目录下的mongo-c-driver目录中:

       mv mongo-c-driver-0.94.2/*  nginx-gridfs/mongo-c-driver/   

       如果有提示已经存在src目录,没有关系,忽略。然后就是下载Nginx,编译安装的过程了。

    (6)下载Nginx1.0.1

     Nginx版本太高对支持nginx-gridfs模块不是很成功,我是使用的Nginx1.7弄了一天都出不来图片。换成1.0.1就好了。对c不是很熟悉就没有深究。有那位大拿知道可以告诉我。

      wget http://nginx.org/download/nginx-1.0.1.zip

      解压:unzip nginx-1.0.1.zip 

      配置编译时设置:./configure --prefix=/usr/local/nginx --with-openssl=/usr/include/openssl --with-http_stub_status_module --add-module=/opt/nginx-gridfs

      编译: make

      安装:make install

      配置mogon-gridfs地址:

      在vim /usr/local/nginx/conf/nginx.conf配置文件中,增加下面的内容:

        location /pics/ {
                gridfs pics    
                field=filename
                type=string;
                mongo 127.0.0.1:27017;
        }

      

     gridfs:nginx识别插件的名字

     pics:数据库名称

     [root_collection]: 选择collection,如root_collection=blog, mongod就会去找blog.files与blog.chunks两个块,默认是fs

     [field]:查询字段,保证mongdb里有这个字段名,支持_id, filename, 可省略, 默认是_id

     [type]:解释field的数据类型,支持objectid, int, string, 可省略, 默认是int

     [user]:用户名, 可省略

     [pass]:密码, 可省略    

     mongo:mongodb url mongo名称 地址:端口

 

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
        location /pics/ {
                gridfs pics
                field=filename
                type=string;
                mongo 127.0.0.1:27017;
        }
        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html

 

      启动:/usr/local/nginx/sbin/nginx &

      查看日志:tail -f /usr/local/nginx/logs/error.log

      检查: 在浏览器输入: http://192.168.1.111/

      当你看到下面的字母就说明nginx启动成功了。

     Welcome to nginx!

 

三、测试开发

      测试例子使用java开发,代码在附件中

    (1)图片写入

     全部的例子在附件中,GridFSTest.rar,例子还需要mongodb的驱动jar包mongo-java-driver-2.9.3.jar

    

                try {
			Mongo mongo = new Mongo("192.168.100.52", 27017);// 创建连接
			DB db = mongo.getDB("pics");	// 选择数据库
			byte[] files = createImage(800, 600, "800 X 600"); // 创建图片
			save(files, "test3.jpg", db); // 存储图片
		} catch (Exception e) {
			e.printStackTrace();
		}

 

    (2)文件获取

        通过代码获取图片就不写了。只写如何在程序中传递文件路径,然后在前端展示。

       存储图片信息时,可以加上ip地址:http://192.168.100.52/pics/test3.jpg ,然后前端应用通过给定的URL地址就可以获取图片内容了。

       在浏览器中输入地址可以获得相同的效果。

 

 

  • 大小: 101.2 KB
1
1
分享到:
评论

相关推荐

    Mongodb + GridFS +Java 操作Mongodb中存储的文件

    MongoDB 是一个流行的开源、高性能、无模式的文档型...通过以上步骤,你可以实现文件的上传、下载、查询和删除,为你的应用程序提供了高效的数据存储解决方案。在实际开发中,记得根据需求调整错误处理和优化性能。

    MongoDB的GridFS:存储大文件的解决方案.rar

    GridFS简介 什么是GridFS GridFS的工作原理 GridFS的应用场景 安装与配置 安装MongoDB 安装MongoDB驱动 GridFS基本操作 文件的上传 文件的下载 文件的删除 GridFS高级操作 文件分片与元数据管理 并发文件操作 文件...

    PHP MongoDB GridFS 存储文件的方法详解

    MongoDB本身不支持大文件的直接存储,因此引入了GridFS作为解决方案。以下是对PHP MongoDB GridFS存储文件方法的详细解释: 1. 直接存储文件: ```php $id = $grid->storeFile("./logo.png"); ``` 在这个例子中,`...

    Vue+axios+Spring Boot+mongoDB 基于Mongo图片存储和基于GridFS的文件存储.zip

    这个压缩包"Vue+axios+Spring Boot+mongoDB 基于Mongo图片存储和基于GridFS的文件存储.zip"提供了一个完整的解决方案,结合了前端Vue.js框架、axios库、后端Spring Boot微服务以及MongoDB数据库的GridFS文件系统,...

    MongoDB GridFS.pdf

    由于 MongoDB 的 BSON 文档格式对单个文档的大小有限制(默认为 16MB),GridFS 提供了一种解决方案,它将大文件分割成较小的块(chunks),每个块通常为 256KB,然后将这些块存储为单独的文档,分布在两个特定的...

    MongoDB GridFS:管理大型文件存储的高效方案

    MongoDB是一个基于文档的NoSQL数据库,由C++语言编写,旨在为大量分布式数据提供高性能、高可用性和高灵活性的数据存储解决方案。MongoDB的主要特点包括: 1. **文档导向**:MongoDB存储BSON(二进制JSON)格式的...

    MongoDB数据库GRIDFS上传下载删除文件

    MongoDB是一种流行的开源、分布式文档型数据库,常用于处理大量数据和高可...在给定的压缩包文件中,"DataBase.sln"可能是Visual Studio的解决方案文件,而"DataBase"可能包含与MongoDB数据库相关的代码或配置文件。

    Laravel开发-gridfs

    GridFS是MongoDB数据库系统中的一个文件存储解决方案,它将大文件分割成多个小块存储,以便于管理和检索。当我们将这两个技术结合时,Laravel开发与GridFS的集成能为文件存储提供一种高效且灵活的方式,尤其适合处理...

    基于 mongodb 可上传各种格式文件,主要是针对图片,Excel ,word 等文件进行上传。可单独部署。

    总的来说,这个基于 MongoDB 的文件管理系统提供了灵活、可扩展的文件存储解决方案,特别适合处理各种类型的文件,如图片、Excel 和 Word 文档。通过单独部署,用户可以根据自己的需求进行定制和扩展,同时确保数据...

    nginx-gridfs

    这个解决方案将高性能的Nginx与MongoDB的分布式文件系统相结合,为大规模的静态内容分发提供了高效且灵活的途径。 **Nginx** 是一个轻量级、高性能的HTTP和反向代理服务器,广泛应用于互联网服务,以处理高并发和...

    MongoDB.NET 2.2.4驱动版本对Mongodb3.3数据库中GridFS增删改查

    MongoDB 是一个流行的开源、分布式文档数据库系统,它提供了丰富的数据模型和高性能的数据存储解决方案。在MongoDB 3.3版本中,GridFS是一种用于存储和检索大型文件(如图像、视频等)的机制。GridFS将大文件分割成...

    Laravel开发-laravel-gridfs-storage

    总的来说,`laravel-gridfs-storage`是Laravel与MongoDB GridFS之间的一个强大桥梁,它使得开发者能够利用Laravel的便利性和MongoDB的分布式文件存储能力,为处理大量大文件的应用场景提供解决方案。通过深入理解这...

    30分钟学MongoDB系列——限定集与大文件存储篇

    对于需要存储大于这个限制的文件,比如视频、大型图片或者大型软件等,MongoDB提供了GridFS作为解决方案。GridFS可以将大文件分成多个小块(chunks),每个小块不超过16MB,并将这些小块分别存储在多个文档中。这些...

    centos下mongodb解压直接可用

    通过这样的压缩包,可以快速在CentOS上部署一个功能完备的MongoDB环境,尤其是对于那些不熟悉配置过程或者希望快速测试和部署MongoDB服务的人来说,这是一个非常方便的解决方案。不过,使用预配置的包时也要注意,...

    Nginx与Nginx-GridFS的安装与配置

    Nginx-GridFS是Nginx的一个模块,用于提供对MongoDB的GridFS存储系统的直接访问,使得Web应用可以直接通过Nginx读取和存储MongoDB中的大文件,如图片、视频等。 首先,我们来了解一下Nginx的基本安装步骤: 1. **...

    MongoDB原子操作与GridFS.pdf

    综上所述,MongoDB 的原子操作保证了数据操作的安全性,而GridFS则为处理大型文件提供了解决方案。在使用 MongoDB 开发应用程序时,理解并充分利用这些特性是非常重要的,特别是对于那些需要处理大量数据或需要确保...

    基于 MongoDB 及 Spring Boot 的文件服务器的实现

    综上所述,本项目通过集成MongoDB和Spring Boot,实现了文件的高效存储和访问,为开发者提供了一种灵活且可扩展的文件服务器解决方案。理解并掌握这些知识点,有助于开发者在实际项目中构建类似功能的系统。

    nginx-gridfs.tgz

    Nginx-GridFS是一种高效的文件存储和访问解决方案,它结合了Nginx Web服务器的高性能特性和MongoDB的GridFS存储系统。GridFS是MongoDB数据库的一个子系统,专门设计用于存储和检索大型文件,如图像、视频或文档。...

    linux nginx-gridfs

    Linux Nginx-GridFS是将MongoDB的GridFS存储系统与Nginx Web服务器集成的一种解决方案,用于高效地提供静态文件服务,如视频、图片等大文件的存储和访问。这种组合允许你在高流量环境下实现高性能的内容分发,特别...

Global site tag (gtag.js) - Google Analytics