上传文件想在metadata中添加数据 实时的修改数据 更新文档的相关信息;网上找了很多资料,最终解决方案为
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import javax.servlet.http.Part;
import org.bson.types.ObjectId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
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.GridFsResource;
import org.springframework.data.mongodb.gridfs.GridFsTemplate;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.client.gridfs.GridFSBucket;
import com.mongodb.client.gridfs.model.GridFSUploadOptions;
import com.mongodb.gridfs.GridFSDBFile;
import com.mongodb.gridfs.GridFSFile;
import com.sysware.framework.eobs.user.SyswareUserDetails;
import com.sysware.framework.file.common.FileExtendAttrContant;
import com.sysware.framework.file.service.FileGridService;
import com.sysware.framework.file.vo.GridFSFileVO;
/**
* 文件服务实现类
*
*<hr>
* @author hanjidong
* @date 2020年11月11日 上午10:49:12
* @since 0.0.1
*/
@Service
public class FileGridServiceImpl{
private Logger logger = LoggerFactory.getLogger(FileGridServiceImpl.class);
/**
* 获得SpringBoot提供的mongodb的GridFS对象
*/
@Autowired
private GridFsTemplate gridFsTemplate;
@Autowired
private GridFSBucket gridFSBucket;
public GridFSDBFile update(String fileId, Map<String,String> dataMap) {
logger.info("[update] param fileId:"+fileId+", dataMap"+dataMap.toString() );
Query query = Query.query(Criteria.where("_id").is(fileId));
// 查询单个文件
GridFSDBFile findOne = gridFsTemplate.findOne(query);
DBObject metaData = findOne.getMetaData();
metaData.putAll(dataMap);
findOne.save();
return findOne;
}
}
展示结果