设为首页 收藏本站
查看: 1634|回复: 0

[经验分享] 【MongoDB】6.关于MongoDB存储文件的 命令执行+代码执行

[复制链接]

尚未签到

发表于 2017-12-15 12:34:04 | 显示全部楼层 |阅读模式
package com.mongo.util;  

  
  
  
import java.io.File;
  
import java.io.FileOutputStream;
  
import java.util.ArrayList;
  
import java.util.List;
  
import org.bson.conversions.Bson;
  
import com.mongodb.BasicDBObject;
  
import com.mongodb.MongoClient;
  
import com.mongodb.MongoCredential;
  
import com.mongodb.ServerAddress;
  
import com.mongodb.client.MongoDatabase;
  
import com.mongodb.client.gridfs.GridFSBucket;
  
import com.mongodb.client.gridfs.GridFSBuckets;
  
import com.mongodb.client.gridfs.GridFSFindIterable;
  
import com.mongodb.client.gridfs.model.GridFSDownloadByNameOptions;
  
import com.mongodb.client.gridfs.model.GridFSFile;
  
  
  
/**
  
  *
  
  * @author AGEN
  
  *
  
  */

  
public>  
      public static void main(String[] args) {
  
          try {
  
              //localhost:mongodb服务器的地址, 27017:mongodb服务器的端口
  
              ServerAddress serverAddress = new ServerAddress("localhost", 27017);  
  
              List<ServerAddress> addrs = new ArrayList<ServerAddress>();  
  
              addrs.add(serverAddress);  
  
              //第一个参数report:用户名,第二个参数report:数据库名,第三个参数"sa".toCharArray():密码
  
              MongoCredential credential = MongoCredential.createScramSha1Credential("report", "report", "sa".toCharArray());  
  
              List<MongoCredential> credentials = new ArrayList<MongoCredential>();  
  
              credentials.add(credential);  
  
               
  
              //通过连接认证获取MongoDB连接  
  
              MongoClient mongoClient = new MongoClient(addrs, credentials);  
  
               
  
              //连接到数据库  
  
              MongoDatabase mongoDatabase = mongoClient.getDatabase("report");  
  
              
  
              //创建文件存取通道
  
              GridFSBucket gsb = GridFSBuckets.create(mongoDatabase);
  
              
  
              //向mongodb里面写入文件
  
//             File file = new File("F:\\500226199001096256.jpg");
  
//             FileInputStream fis = new FileInputStream(file);

  
//             ObjectId>  
              
  
              //按Id查找文件,并保存到指定地方
  
              //注意,下面ID为fs.files的id, 非fs.chunks的id
  
              //如果不行,我就不知道了,你解决后跟我说一下,让我长长见识!thank you
  
              FileOutputStream fos = new FileOutputStream(new File("D:\\aaaa.jpg"));
  
//             gsb.downloadToStream(new ObjectId("57178cd65eeb4f1f5c2cbaf1"), fos);
  
              
  
              //对于你那个uuid是36位的,可以这样构建条件来查询将下列md5换成你的_id,对应的值换成像的36位uuid即可
  
              Bson bson = new BasicDBObject("md5", "4d08209a90345ec9ebb0baf99dd218a1");
  
              GridFSFindIterable gsfi = gsb.find(bson);
  
              //因为你的_id是用uuid来表示的,是唯一的,所以应该可以也只能查出一条记录,在此就直接取第一条,否则应该再筛选
  
              GridFSFile gfsf = gsfi.first();  
  
              //按文件名来取得此文件,第三个参数直接创建,表示取此文件的最新版本,如果需要取较旧的版本,则new GridFSDownloadByNameOptions().revision(0)
  
              //其中0为版本号,表示如下
  
//            0 = the original stored file
  
//            1 = the first revision
  
//            2 = the second revision
  
//            etc..
  
//            -2 = the second most recent revision
  
//            -1 = the most recent revision
  
              gsb.downloadToStreamByName(gfsf.getFilename(), fos, new GridFSDownloadByNameOptions());
  
              System.out.println(gfsf.getFilename() + "---" + gfsf.getObjectId() + "---" + gfsf.getId());
  
          } catch (Exception e) {  //57178cd65eeb4f1f5c2cbaf2
  
              System.err.println(e.getClass().getName() + ":" + e.getMessage());  
  
          }  
  
     }
  
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-424340-1-1.html 上篇帖子: 详解 Node + Redux + MongoDB 实现 Todolist 下篇帖子: mongodb 常用的命令
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表