一、linux上安装mongodb
1、下载安装包:https://www.mongodb.com/download-center#atlas,上传包mongodb-linux-x86_64-rhel70-3.6.5.tgz到服务器
2、创建mongodb文件夹,作为安装目标文件夹
cd /usr/local;mkdir mongodb
3、解压,移动解压缩后的文件夹下的所有文件到mongodb文件夹下
tar -zxvf mongodb-linux-x86_64-rhel70-3.6.5.tgz;
cd mongodb-linux-x86_64-rhel70-3.6.5;
mv * /usr/local/mongodb
4、创建data/db文件夹存放数据,创建logs文件夹存放日志
cd /usr/local/mongodb;
mkdir -p data/db;
mkdir logs;
5、创建配置文件
cd /usr/local/mongodb/bin;
vim mongodb.conf
加入以下内容:
dbpath = /usr/local/mongodb/data/db
logpath = /usr/local/mongodb/logs/mongodb.log
port = 27017
fork = true
bind_ip = 192.168.2.182,127.0.0.1 #多个ip的配置方式
6、启动MongoDB服务
cd /usr/local/mongodb/bin;
./mongod -f mongodb.conf #加载配置文件
7、客户端访问
./mongo
use wx_applet #创建数据库
show dbs
可以看到,我们刚创建的数据库不在数据库的列表中, 要显示它,我们需要向数据库插入一些数据
db.wx_applet.insert({"name":"yangfeng"})
二、springboot整合mongodb,实现文件的上传下载
1、pom.xml文件中加入:
2、application.properties中加入:
格式:
spring.data.mongodb.uri=mongodb://username:password@ip:port/database
3、这里以文件上传到mongodb来做简单的示例
package com.jp.tech.applet.ms.file.api; import com.jp.tech.applet.common.constant.Constant; import com.jp.tech.applet.common.jwt.JWTClaimGetter; import com.jp.tech.applet.common.jwt.JWTConstant; import com.jp.tech.applet.common.jwt.JWTHelper; import com.jp.tech.applet.common.resource.ResourceUtil; import com.jp.tech.applet.common.result.ResultModel; import com.jp.tech.applet.ms.file.domain.JpFileExt; import com.jp.tech.applet.ms.file.service.IFileService; import com.mongodb.gridfs.GridFSDBFile; import com.mongodb.gridfs.GridFSFile; import io.jsonwebtoken.Claims; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.gridfs.GridFsTemplate; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Part; import java.io.IOException; import java.io.InputStream; import java.util.UUID; /** * @author yangfeng * @create 2018-06-04 12:57 **/ @Controller @RequestMapping("/file") public class FileController { private Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private GridFsTemplate gridFsTemplate; /** * 文件上传 * @param request * @return */ @RequestMapping(value = "/uploadFile", method = RequestMethod.POST) @ResponseBody public ResultModel uploadFile(HttpServletRequest request) { try { Part part = request.getPart("file"); // 获得提交的文件名 String fileName = part.getSubmittedFileName(); // 获得文件输入流 InputStream ins = part.getInputStream(); // 获得文件类型 String contentType = part.getContentType(); // 将文件存储到mongodb中,mongodb 将会返回这个文件的具体信息 GridFSFile gridFSFile = gridFsTemplate.store(ins, fileName, contentType); JpFileExt jpFile = new JpFileExt(); jpFile.setContentType(contentType); jpFile.setFileName(fileName); jpFile.setMongoFileId(gridFSFile.getId().toString()); return ResultModel.success(jpFile); } catch (Exception e) { logger.error("上传失败:"+e.getMessage()); return ResultModel.commonError("上传失败!"); } } /** * 下载 * @param fileId 文件id * @param response * @return */ @RequestMapping(value = "/downloadFile") public void downloadFile(@RequestParam(name = "file_id") String fileId, HttpServletResponse response) { Query query = Query.query(Criteria.where("_id").is(fileId)); // 查询单个文件
GridFSDBFile gfsfile = gridFsTemplate.findOne(query); try { if(gfsfile==null){ response.setContentType(Constant.RESPONSE_CONTENT_TYPE); response.getWriter().write("文件已经不存在啦!"); } // 通知浏览器进行文件下载 response.setContentType(gfsfile.getContentType()); response.setHeader("Content-Disposition", "attachment;filename=" + gfsfile.getFilename()); gfsfile.writeTo(response.getOutputStream()); } catch (IOException e) { logger.error("下载失败:"+e.getMessage()); }} /** * 删除文件 * @param fileId * @return */ @RequestMapping( value = "/deleteFile" , method = RequestMethod. POST) @ResponseBody public ResultModel deleteFile( @RequestParam( name = "file_id") String fileId) { Query query = Query. query(Criteria. where( "_id").is(fileId)) ; // 查询单个文件 GridFSDBFile gfsfile = gridFsTemplate.findOne(query) ; if(gfsfile== null){ return ResultModel. commonError( " 文件不存在! ") ; } try { gridFsTemplate.delete(query) ; } catch ( final Exception e) { logger.error( " 删除失败: "+e.getMessage()) ; return ResultModel. commonError( " 删除失败! ") ; } return ResultModel. success( " 删除成功! ") ; }}