grails将文件插入mongodb数据库
来源:互联网 发布:淘宝洛天依装饰品 编辑:程序博客网 时间:2024/06/08 01:05
首先建立一个Domain class类。代码如下所示:
import com.mongodb.WriteConcernimport org.bson.types.ObjectIdclass FileItem { static mapWith = "mongo" static constraints = { } static mapping = { writeConcern WriteConcern.FSYNC_SAFE } ObjectId id String fileName //文件名 String fileType //文件类型 Long fileSize //文件大小 String fileDescription //文件描述 String fsId //FSGrid存储ID Date dateCreated //创建日期 Date lastUpdated //最后修改日期 String createdBy //创建人 String updatedBy //最后修改人}
接下来需要一个公共类,将任何类型的本地文件都可以自动存入到数据库中去。
Service类如下所示:
import com.mongodb.gridfs.GridFSimport com.mongodb.gridfs.GridFSDBFileimport com.mongodb.gridfs.GridFSInputFileimport org.bson.types.ObjectId/** * 文件管理服务 * 通过Mongo GRIDFS 服务提供文件的存储 * 通过FileItem表记录真实文件名与GRID FS ID的关联 */class FileMgmtService { static transactional = false def mongo def grailsApplication def securityService /** * 上传文件保存到集中存储的地方 * @return */ FileItem saveFile(String fileName, byte[] fileData, String contentType, String fileDescription) { //存储GridFS数据库 GridFS gridFS = new GridFS(mongo.getDB(grailsApplication.config.grails.mongo.databaseName)) GridFSInputFile gridFSInputFile = gridFS.createFile(fileData) gridFSInputFile.filename = fileName gridFSInputFile.contentType = contentType gridFSInputFile.save() //存储FileItem表 FileItem fileItem = new FileItem() fileItem.fileDescription = fileDescription fileItem.fileName = fileName fileItem.createdBy = securityService.currentUserName fileItem.dateCreated = new Date() fileItem.fileSize = fileData.size() fileItem.fileType = contentType fileItem.fsId = gridFSInputFile.id.toString() fileItem.save(flush: true, validate: false) return fileItem } //删除文件必须通过该服务,同时删除FileItem和GridFS文件 void deleteFile(String fileItemId) { FileItem fileItem = FileItem.findById(new ObjectId(fileItemId)) if(fileItem){ GridFS gridFS = new GridFS(mongo.getDB(grailsApplication.config.grails.mongo.databaseName)) gridFS.remove(new ObjectId(fileItem.fsId)) fileItem.delete() } } //获取真正文件数据 byte[] getFileData(String fileItemId) { FileItem fileItem = FileItem.findById(new ObjectId(fileItemId)) if(fileItem){ ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream() GridFS gridFS = new GridFS(mongo.getDB(grailsApplication.config.grails.mongo.databaseName)) GridFSDBFile gridFSDBFile = gridFS.find(new ObjectId(fileItem.fsId)) if(gridFSDBFile){ gridFSDBFile.writeTo(byteArrayOutputStream) } return byteArrayOutputStream.toByteArray() }else{ return null } }}
读取数据库中如果有国际化文件,则必须读取环境中相应的语言类型,然后进行选择。
def getCurrentLocale() { try { def lang = RequestContextHolder.currentRequestAttributes().getSession().'org.springframework.web.servlet.i18n.SessionLocaleResolver.LOCALE'.language if (lang) { if (lang.startsWith('en')) { return ParameterConstant.LOCALE_EN_US } else if (lang && lang.startsWith('zh')) { return ParameterConstant.LOCALE_ZH_CN } } else { return ParameterConstant.LOCALE_EN_US } } catch (Throwable e) { return ParameterConstant.LOCALE_EN_US } }
- grails将文件插入mongodb数据库
- python读取json文件,并将数据插入到mongodb
- 将DataTable插入数据库
- 用Xml2OleDb将XML文件插入到数据库
- 用Xml2OleDb将XML文件插入到数据库
- 用Xml2OleDb将XML文件插入到数据库
- 用Xml2OleDb将XML文件插入到数据库
- 用Xml2OleDb将XML文件插入到数据库
- 用Xml2OleDb将XML文件插入到数据库
- 将Excel转换成sql文件,插入数据库
- 笔记:读取sql文件,然后将数据批量插入数据库
- Java读取csv文件并将内容插入到数据库
- php读取txt文件并将数据插入到数据库
- php读取txt文件并将数据插入到数据库
- php读取txt文件并将数据插入到数据库
- Java读取csv文件并将内容插入到数据库
- grails检索mongodb
- 如何将图片插入数据库
- Jsp显示数据方法
- 第12周项目5--任务1,银行系统框架
- 长沙regional总结
- Hibernate 所有缓存机制详解
- 破解,就是个猜谜语的游戏
- grails将文件插入mongodb数据库
- Web前端开发精品工具
- 个人所得税
- 浅谈MySQL 数据库性能优化
- GestureDetector和SimpleOnGestureListener的使用教程
- java TCPSocket聊天小程序
- 微软Windows Server 2012 R2/System Center 2012 R2正式版发布 混合云受支持
- C++初始化列表探索
- 黑马程序员 面向对象