欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java+MongoDB实现存图片、下载图片的方法示例

程序员文章站 2023-11-14 15:14:52
本文实例讲述了java+mongodb实现存图片、下载图片的方法。分享给大家供大家参考,具体如下: 1.存图片 demo:将某个文件存到mongodb,这个file可以...

本文实例讲述了java+mongodb实现存图片、下载图片的方法。分享给大家供大家参考,具体如下:

1.存图片

demo:将某个文件存到mongodb,这个file可以通过前台参数传入,我这里直接将d://test.png存到mongodb

@requestmapping("/addfile")
@responsebody
public string addfile(){
    mongoclient client = new mongoclient("127.0.0.1",27017);
    db db = client.getdb("files");
    gridfs fs = new gridfs(db);
    try {
      gridfsinputfile gridfsinputfile = fs.createfile(new file("d://test.png"));
      gridfsinputfile.setfilename("db_test.png");
      gridfsinputfile.save();
    } catch (ioexception e) {
      e.printstacktrace();
    }
    return "file over";
}

执行后,可看到图片已经存入成功:

java+MongoDB实现存图片、下载图片的方法示例

2.下载图片

需要指定图片id,可从前端参数传入,我这里写死(上一步存图片,对应了一个mongodb中的files_id):

@requestmapping("/downfile")
  public void downfile(httpservletresponse response){
    string fileid = "5c0f7c374fc404123403d69e";//这里可以通过参数取代
    try {
      mongoclient client = new mongoclient("127.0.0.1",27017);
      db db = client.getdb("files");
      gridfs fs = new gridfs(db);
      gridfsdbfile gridfsdbfile = fs.findone(new objectid(fileid));
      outputstream sos = response.getoutputstream();
      response.setcontenttype("application/octet-stream");
      // 获取原文件名
      string name = (string) gridfsdbfile.get("filename");
      string filename = new string(name.getbytes("gbk"), "iso8859-1");
      // 设置下载文件名
      response.addheader("content-disposition", "attachment; filename=\"" + filename + "\"");
      // 向客户端输出文件
      gridfsdbfile.writeto(sos);
      sos.flush();
      sos.close();
    } catch (ioexception e) {
      e.printstacktrace();
    }
  }

更多java相关内容感兴趣的读者可查看本站专题:《java图片操作技巧汇总》、《java日期与时间操作技巧汇总》、《java操作dom节点技巧总结》、《java文件与目录操作技巧汇总》及《java数据结构与算法教程》。

希望本文所述对大家java程序设计有所帮助。