时间:2023-07-09|浏览:195
用戶喜愛的交易所
已有账号登陆后会弹出下载
本节,我们将介绍如何基于MongoDB技术来存储二进制文件,从而实现一个文件服务器MongoDBFileServer。
文件服务器的需求
本文件服务器致力于小型文件的存储,比如博客中的图片、普通文档等。由于MongoDB支持多种数据格式的存储,对于二进制的存储自然也是不在话下,所以可以很方便地用于存储文件。由于MongoDB的BSON文档对于数据量大小的限制(每个文档不超过16MB),所以本文件服务器主要针对的是小型文件的存储。对于大型文件的存储(比如超过16MB),MongoDB官方已经提供了成熟的产品GridFS,读者朋友可以自行了解。
文件服务器应能够提供与平台无关的REST API供外部系统调用。
文件服务器整体的API设计如下。
·GET /files/{pageIndex}/{pageSize}:分页查询已经上传了的文件。 ·GET /files/{id}:下载某个文件。 ·GET /view/{id}:在线预览某个文件。比如,显示图片。 ·POST /upload:上传文件。 ·DELETE /{id}:删除文件。
我们创建一个新项目,称之为mongodb-file-server。
所需技术
本例子采用的开发技术如下。
·MongoDB 3.4.6。 ·Spring Boot 2.0.0.M2。 ·Spring Data MongoDB 2.0.0.M4。 ·Thymeleaf 3.0.6.RELEASE。 ·Thymeleaf Layout Dialect 2.2.2。 ·Embedded MongoDB 2.0.0。
其中,Spring Boot用于快速构建一个可独立运行的Java项目; Thymeleaf方便展示数据;Embedded MongoDB则是一款由Organization Flapdoodle OSS出品的内嵌MongoDB,可以在不启动MongoDB服务器的前提下,方便进行相关的MongoDB接口测试。
本文所演示的项目,是采用Gradle进行组织以及构建的,如果对Gradle不熟悉,也可以自行将项目转为Maven项目。
build.gradle文件完整配置内容如下。
buildscript{ // buildscript代码块中脚本优先执行 // ext用于定义动态属性 ext { springBootVersion = "2.0.0.M2" } // 使用了Maven的中央仓库(也可以指定其他仓库) repositories { //mavenCentral m