|
@@ -15,79 +15,87 @@ import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
|
+ * mongdb GridFs 文件管理服务
|
|
|
+ *
|
|
|
* @author TRX
|
|
|
* @date 2024/3/25
|
|
|
*/
|
|
|
@Service
|
|
|
public class GridFsService {
|
|
|
|
|
|
- @Autowired GridFsTemplate gridFsTemplate;
|
|
|
+ @Autowired
|
|
|
+ GridFsTemplate gridFsTemplate;
|
|
|
|
|
|
- /**
|
|
|
- * 存储文件数据
|
|
|
- *
|
|
|
- * @param content
|
|
|
- * @param filename
|
|
|
- * @return
|
|
|
- */
|
|
|
- public String addGridFs(InputStream content, String filename) {
|
|
|
- ObjectId objectId = gridFsTemplate.store(content, filename);
|
|
|
- return objectId.toHexString();
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * 存储文件数据
|
|
|
+ *
|
|
|
+ * @param content
|
|
|
+ * @param filename
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public String addGridFs(InputStream content, String filename) {
|
|
|
+ ObjectId objectId = gridFsTemplate.store(content, filename);
|
|
|
+ return objectId.toHexString();
|
|
|
+ }
|
|
|
|
|
|
- /**
|
|
|
- * 根据ID查询文件
|
|
|
- *
|
|
|
- * @param id
|
|
|
- * @return
|
|
|
- * @throws IOException
|
|
|
- */
|
|
|
- public InputStream getFile(String id) throws IOException {
|
|
|
- GridFSFile file = gridFsTemplate.findOne(new Query(Criteria.where("_id").is(id)));
|
|
|
- if (file != null) {
|
|
|
- GridFsResource resource = gridFsTemplate.getResource(file);
|
|
|
- return resource.getInputStream();
|
|
|
+ /**
|
|
|
+ * 根据ID查询文件
|
|
|
+ *
|
|
|
+ * @param id
|
|
|
+ * @return
|
|
|
+ * @throws IOException
|
|
|
+ */
|
|
|
+ public InputStream getFile(String id) throws IOException {
|
|
|
+ GridFSFile file = gridFsTemplate.findOne(new Query(Criteria.where("_id").is(id)));
|
|
|
+ if (file != null) {
|
|
|
+ GridFsResource resource = gridFsTemplate.getResource(file);
|
|
|
+ return resource.getInputStream();
|
|
|
+ }
|
|
|
+ return null;
|
|
|
}
|
|
|
- return null;
|
|
|
- }
|
|
|
|
|
|
- /**
|
|
|
- * 根据名称查询多个文件
|
|
|
- *
|
|
|
- * @param name
|
|
|
- * @return
|
|
|
- * @throws IOException
|
|
|
- */
|
|
|
- public List<InputStream> getFilesByName(String name) throws IOException {
|
|
|
- List<InputStream> inputStreams = new ArrayList<>();
|
|
|
- Query query = new Query(Criteria.where("filename").is(name));
|
|
|
- List<GridFSFile> files = gridFsTemplate.find(query).into(new ArrayList<>());
|
|
|
+ /**
|
|
|
+ * 根据名称查询多个文件
|
|
|
+ *
|
|
|
+ * @param name
|
|
|
+ * @return
|
|
|
+ * @throws IOException
|
|
|
+ */
|
|
|
+ public List<InputStream> getFilesByName(String name) throws IOException {
|
|
|
+ List<InputStream> inputStreams = new ArrayList<>();
|
|
|
+ Query query = new Query(Criteria.where("filename").is(name));
|
|
|
+ List<GridFSFile> files = gridFsTemplate.find(query).into(new ArrayList<>());
|
|
|
|
|
|
- for (GridFSFile file : files) {
|
|
|
- GridFsResource resource = gridFsTemplate.getResource(file);
|
|
|
- InputStream inputStream = resource.getInputStream();
|
|
|
- if (inputStream != null) {
|
|
|
- inputStreams.add(inputStream);
|
|
|
- }
|
|
|
+ files.stream().forEach((file) -> {
|
|
|
+ GridFsResource resource = gridFsTemplate.getResource(file);
|
|
|
+ InputStream inputStream = null;
|
|
|
+ try {
|
|
|
+ inputStream = resource.getInputStream();
|
|
|
+ } catch (IOException e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+ if (inputStream != null) {
|
|
|
+ inputStreams.add(inputStream);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return inputStreams;
|
|
|
}
|
|
|
- return inputStreams;
|
|
|
- }
|
|
|
|
|
|
- /**
|
|
|
- * 根据文件删除文件
|
|
|
- *
|
|
|
- * @param filename
|
|
|
- */
|
|
|
- public void deleteFileByName(String filename) {
|
|
|
- gridFsTemplate.delete(new Query(Criteria.where("filename").is(filename)));
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * 根据文件删除文件
|
|
|
+ *
|
|
|
+ * @param filename
|
|
|
+ */
|
|
|
+ public void deleteFileByName(String filename) {
|
|
|
+ gridFsTemplate.delete(new Query(Criteria.where("filename").is(filename)));
|
|
|
+ }
|
|
|
|
|
|
- /**
|
|
|
- * 根据文件ID删除文件
|
|
|
- *
|
|
|
- * @param id
|
|
|
- */
|
|
|
- public void deleteFileById(String id) {
|
|
|
- gridFsTemplate.delete(new Query(Criteria.where("_id").is(id)));
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * 根据文件ID删除文件
|
|
|
+ *
|
|
|
+ * @param id
|
|
|
+ */
|
|
|
+ public void deleteFileById(String id) {
|
|
|
+ gridFsTemplate.delete(new Query(Criteria.where("_id").is(id)));
|
|
|
+ }
|
|
|
}
|