博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mongo数据库存图片,邮件
阅读量:5301 次
发布时间:2019-06-14

本文共 2763 字,大约阅读时间需要 9 分钟。

      个人在项目中遇到需要往mongo里保存图片和文件,整体做下来写个随笔,也算是个总结。

      是一种非关系型(NoSql),很好的实现了面向对象的思想(OO思想),在Mongo DB中 每一条记录都是一个Document对象。Mongo DB最大的优势在于所有的数据持久操作都无需开发人员手动编写SQL语句,直接调用方法就可以轻松的实现CRUD操作。

      一般mongo建库的时候自带有files(文件),mail(邮件).....等库,这里我做的时候就把图片直接保存到了wechat_cc3下的GridFS下的HeadImage下。

1 import com.jfinal.kit.PropKit; 2 import com.mongodb.DB; 3 import com.mongodb.MongoClient; 4 import com.mongodb.gridfs.GridFS; 5 import com.mongodb.gridfs.GridFSDBFile; 6 import com.mongodb.gridfs.GridFSInputFile; 7  8 import java.io.*; 9 import java.net.URL;10 import java.net.URLConnection;11 import java.net.UnknownHostException;12 13 public class imageUtil {14 15     public static String getImageByUrl(String imageurl, String openId){16         GridFSInputFile gridFSInputFile;17         GridFS myFS = null;18         MongoClient mongoClient = null;19         try {20             mongoClient = MongoConnUtil.getConn();21             DB db = mongoClient.getDB(PropKit.get("mongodb.db","ztct_cc3"));22             myFS = new GridFS(db,"HeadImage");23             // 构造URL24             URL url = new URL(imageurl);25             // 打开连接26             URLConnection con = url.openConnection();27             // 输入流28             InputStream is = con.getInputStream();                // 这里需要先删除已存在文件,如果已存在会默认保存不进去29             myFS.remove(openId);30             GridFSDBFile gridFSDBFile = myFS.findOne(openId);31             gridFSInputFile = myFS.createFile(is);32             gridFSInputFile.put("_id", openId);33             gridFSInputFile.setFilename(openId);34             gridFSInputFile.setContentType("jpg");35             gridFSInputFile.save();36             is.close();37             return "success";38         } catch (Exception e) {39             return "error";40         }41     }42 43 }

 

  主要在这两步

拿到照片流 InputStream is = con.getInputStream();
存进库里 gridFSInputFile = myFS.createFile(is);
 
import com.jfinal.kit.PropKit;import com.mongodb.MongoClient;import java.net.UnknownHostException;public class MongoConnUtil {    private static MongoClient mongoClient = null;    public static  MongoClient getConn() throws UnknownHostException {        if(mongoClient == null){            intializeMongoClient();        }        return mongoClient;    }    private static void intializeMongoClient() throws UnknownHostException {        String host = PropKit.get("mongodb.ip", "127.0.0.1");        int port = PropKit.getInt("mongodb.port",27017);        mongoClient = new MongoClient( host , port );    }    public  static synchronized void closeConnection(){        if(mongoClient != null){            mongoClient.close();        }    }}

 

      我这里得到的图片是一个url,所以直接读取url把流存进mongo里。如果需要存本地的图片改下获取图片的代码,其他一样就行。

     【施主,觉得有用打赏点哦!多多少少没关系,一分也是对我的支持和鼓励。非常感谢!】

      

转载于:https://www.cnblogs.com/noddles/p/6543772.html

你可能感兴趣的文章
JavaScript动画打开半透明提示层
查看>>
Mybatis生成resulteMap时的注意事项
查看>>
jquery-jqzoom 插件 用例
查看>>
1007. Maximum Subsequence Sum (25)
查看>>
iframe的父子层跨域 用了百度的postMessage()方法
查看>>
图片生成缩略图
查看>>
动态规划 例子与复杂度
查看>>
查看oracle数据库的连接数以及用户
查看>>
【数据结构】栈结构操作示例
查看>>
中建项目环境迁移说明
查看>>
三.野指针和free
查看>>
activemq5.14+zookeeper3.4.9实现高可用
查看>>
TCP/IP详解学习笔记(3)IP协议ARP协议和RARP协议
查看>>
简单【用户输入验证】
查看>>
python tkinter GUI绘制,以及点击更新显示图片
查看>>
HDU4405--Aeroplane chess(概率dp)
查看>>
CS0103: The name ‘Scripts’ does not exist in the current context解决方法
查看>>
20130330java基础学习笔记-语句_for循环嵌套练习2
查看>>
Spring面试题
查看>>
窥视SP2010--第一章节--SP2010开发者路线图
查看>>