Java GridFS MongoDB 下载文件 内容不完整
参考MongoDB官方文档GridFS的部分下载文件。
ObjectId fileId = new ObjectId("60345d38ebfcf47030e81cc9");
try (GridFSDownloadStream downloadStream = gridFSBucket.openDownloadStream(fileId)) {int fileLength = (int) downloadStream.getGridFSFile().getLength();byte[] bytesToWriteTo = new byte[fileLength];downloadStream.read(bytesToWriteTo);System.out.println(new String(bytesToWriteTo, StandardCharsets.UTF_8));
}
下载图片时发现图片不完整,只下载了第一个chunck。
参考stackoverflow,GridFSDownloadStreamImpl的read方法是逐chunck读取的,因此文件大小大于chunk的时候需要循环读取。修改代码,图片可以完整下载。
public void downloadMongoFile() throws Exception {ObjectId fileId = new ObjectId("60345d38ebfcf47030e81cc9");GridFSDownloadStream downloadStream = gridFSBucket.openDownloadStream(fileId);int fileLength = (int) downloadStream.getGridFSFile().getLength();byte[] bytes = new byte[fileLength];OutputStream outputStream = Files.newOutputStream(Paths.get("./img.jpg"));int bytesRead = 0;while(bytesRead < fileLength) {int newBytesRead = downloadStream.read(bytes);if(newBytesRead == -1) {throw new Exception();}// System.out.println("off: " + bytesRead);outputStream.write(bytes, 0, newBytesRead);bytesRead += newBytesRead;}outputStream.flush();outputStream.close();}
Java GridFS MongoDB 下载文件 内容不完整相关推荐
- java 下载文件内容为空_java 下载文件 内容为空。
Java日志使用slf4j 配置log4j后,有日志文件 但日志文件内容为空 SLF4J的全称是Simple Logging Facade for Java,即简单日志门面. SLF4J并不是具体的日 ...
- java中读取properties文件内容五种方式
一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC ...
- PHP使用文件流下载文件方法(附:解决下载文件内容乱码问题)
记得高中时候做过游戏私服,那时候的游戏主页是用PHP写的,因为文件很固定,客户端,登陆器和一些小工具,文件数目也不是很多,所以都是直接把下载链接写死的,直接链接到本地服务器的文件目录,今天QQ群有个朋 ...
- java ftp获取文件夹大小,java 用FTPClient 下载文件时不显示总大小?解决方案
java 用FTPClient 下载文件时不显示总大小? FTPClient ftp = new FTPClient(); ftp.setControlEncoding("utf-8&quo ...
- 五种方式让你在java中读取properties文件内容不再是难题
2019独角兽企业重金招聘Python工程师标准>>> 方式1.通过context:property-placeholder加载配置文件jdbc.properties中的内容 < ...
- Java实现FTP下载文件到客户端(浏览器)
目录 一.简介 二.maven依赖 三.配置类 四.工具类 4.1.服务器文件名中文处理 4.2.下载文件名中文处理 五.接口验证 一.简介 我在之前的文章(Java实现文件上传和下载)里讲过非F ...
- 【踩坑】Linux java中ftp下载文件,解压文件损坏,以及图片下载打开只显示下载路径的问题
[踩坑]Linux java中ftp下载文件,解压文件损坏,以及图片下载打开只显示下载路径的问题 一. 问题重现 二. 问题解决思路 1. 确认是不是上传就导致数据出错了 2. 是不是平台问题 三. ...
- java从url下载文件_从URL下载Java文件
java从url下载文件 Today we will learn how to download a file from URL in java. We can use java.net.URL op ...
- java使用HttpGet下载文件
前面有写过HttpPost上传文件,结果不久又遇到要用java代码去下载文件的需求:代码中的url是文件的访问地址 public static byte[] get(String url, Map&l ...
最新文章
- 理解和使用systrace
- POJ3041_Asteroids
- 视觉SLAM十四讲学习笔记-第六讲-非线性优化的状态估计问题
- 前置++与后置++的要点分析
- 超火网络直播短视频宣传海报PSD分层模板,新媒体互动
- python局部变量函数_python函数局部变量用法实例分析
- 可视化—解决graphviz保存决策树中文乱码问题
- 190627每日一句南京创新周;那些绝对不会失败的人,是永远不去尝试的人
- 【ROS】编译软件包packages遇到进度缓慢或卡死,使用swap
- 深层和浅层特征融合的坑
- 4. AWS DynamoDB实战之Secondary Indexes
- 菜鸟的mongoDB学习---(二)MongoDB 数据库,对象,集合
- 超详细的TypeScript入门教程!
- C++正则表达式(regex_match、regex_search与regex_replace)
- wannier插值能带拟合4
- 数据库笔试——查出各部门超出部门平均薪资的员工的姓名,薪资,所在部门名称及部门平均薪水...
- latex数学公式编写(一):latex矩阵编写
- Java微服务框架一览
- [MS Project]Project软件入门两天之旅
- vue-barcode生成条形码