请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于readGridFSByFaceId方法

private File readGridFSByFaceId(String faceId) throws Exception {

        GridFSFindIterable gridFSFiles
                = gridFSBucket.find(Filters.eq("_id", new ObjectId(faceId)));

        GridFSFile gridFS = gridFSFiles.first();

        if (gridFS == null) {
            GraceException.display(ResponseStatusEnum.FILE_NOT_EXIST_ERROR);
        }

        String fileName = gridFS.getFilename();
        System.out.println(fileName);

        // 获取文件流,保存文件到本地或者服务器的临时目录
        File fileTemp = new File("/workspace/temp_face");
        if (!fileTemp.exists()) {
            fileTemp.mkdirs();
        }

        File myFile = new File("/workspace/temp_face/" + fileName);

        // 创建文件输出流
        OutputStream os = new FileOutputStream(myFile);
        // 下载到服务器或者本地
        gridFSBucket.downloadToStream(new ObjectId(faceId), os);

        return myFile;
    }

查看图像的这个方法会先把文件保存到本地,然后在返回文件。那如果多次查看图像的话岂不是会下载多次相同文件

正在回答

1回答

风间影月 2023-03-02 08:00:54

文件名都是不同的,所以不会覆盖哈~

0 回复 有任何疑惑可以回复我~
  • 如果是同一个用户的话,faceid应该是一样的吧,那同一个用户重复点查看图像,这个时候会覆盖吗
    回复 有任何疑惑可以回复我~ 2023-03-02 09:15:08
  • 看自己的业务,像头像本身就是只有一个的,那么这里就是唯一的,覆盖没关系,上传就会覆盖。如果必须不能覆盖,那么上传的时候文件名给他一个随机数就行,或者加日期时间戳也可以,这样就不会覆盖的
    回复 有任何疑惑可以回复我~ 2023-03-02 09:16:53
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信