Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以获取从服务器下载的文件的md5哈希值?_Javascript_Node.js_Mongodb_Mongoose_Gridfs - Fatal编程技术网

Javascript 是否可以获取从服务器下载的文件的md5哈希值?

Javascript 是否可以获取从服务器下载的文件的md5哈希值?,javascript,node.js,mongodb,mongoose,gridfs,Javascript,Node.js,Mongodb,Mongoose,Gridfs,在将文件存储到mongo数据库之前,是否可以使用从服务器下载的mongo grid fs获取文件的md5哈希值。现在使用下面的代码,它使用md5、文件名、内容类型等直接将数据存储到mongo,因为我使用了管道。现在我想在将文件存储到数据库之前先检查文件的md5散列,我想先获取文件的md5值,因为我想使用它来避免重复。现在我尝试记录文件存储。但我不认为它包含md5。有什么想法吗?非常感谢。顺便说一句,我使用的是mongo网格fs 文件存储数据 下载文件的代码 如果服务器没有随文件提供可靠的md5s

在将文件存储到mongo数据库之前,是否可以使用从服务器下载的mongo grid fs获取文件的md5哈希值。现在使用下面的代码,它使用md5、文件名、内容类型等直接将数据存储到mongo,因为我使用了管道。现在我想在将文件存储到数据库之前先检查文件的md5散列,我想先获取文件的md5值,因为我想使用它来避免重复。现在我尝试记录文件存储。但我不认为它包含md5。有什么想法吗?非常感谢。顺便说一句,我使用的是mongo网格fs

文件存储数据 下载文件的代码
如果服务器没有随文件提供可靠的md5sum,则必须对整个文件内容进行md5sum计算。换句话说,不,你不能先得到md5。为了避免重复并避免下载两次,您可以设置一个临时存储来放置此类文件,在md5检查后进行移动或删除。因此,您的意思是我必须首先下载文件并将其存储在我的服务器上?是的,下载并存储。除非服务器为您执行md5,否则对我来说,这是一个糟糕的案例
GridWriteStream{ 
   _writableState:WritableState{ 
      objectMode:false,
      highWaterMark:16384,
      finalCalled:false,
      needDrain:false,
      ending:false,
      ended:false,
      finished:false,
      destroyed:false,
      decodeStrings:true,
      defaultEncoding:'utf8',
      length:0,
      writing:false,
      corked:0,
      sync:true,
      bufferProcessing:false,
      onwrite:[ 
         Function:         bound onwrite
      ],
      writecb:null,
      writelen:0,
      bufferedRequest:null,
      lastBufferedRequest:null,
      pendingcb:0,
      prefinished:false,
      errorEmitted:false,
      emitClose:true,
      autoDestroy:false,
      bufferedRequestCount:0,
      corkedRequestsFree:{ 
         next:null,
         entry:null,
         finish:[ 
            Function:            bound onCorkedFinish
         ]
      }
   },
   writable:true,
   _events:[ 
      Object:      null prototype
   ]{ 

   },
   _eventsCount:0,
   _maxListeners:undefined,
   _opened:false,
   _opening:true,
   _writable:true,
   _closing:false,
   _destroyed:false,
   _errorEmitted:false,
   _grid:Grid{ 
      db:Db{ 
         _events:[ 
            Object:            null prototype
         ]{ 

         },
         _eventsCount:0,
         _maxListeners:undefined,
         s:[ 
            Object
         ],
         serverConfig:[ 
            Getter
         ],
         bufferMaxEntries:[ 
            Getter
         ],
         databaseName:[ 
            Getter
         ]
      },
      mongo:{ 
[ 
            Function
         ]         MongoError:[ 
            Function
         ],
         Admin:[ 
            Function
         ],
         MongoClient:[ 
            Function
         ],
         Db:[ 
            Function
         ],
         Collection:[ 
            Function
         ],
         Server:[ 
            Function
         ],
         ReplSet:[ 
            Function
         ],
         Mongos:[ 
            Function
         ],
         ReadPreference:[ 
            Function
         ],
         GridStore:[ 
            Function
         ],
         Chunk:[ 
            Function
         ],
         Logger:[ 
            Function
         ],
         Cursor:[ 
            Function
         ],
         GridFSBucket:[ 
            Function
         ],
         CoreServer:[ 
            Function
         ],
         CoreConnection:[ 
            Function
         ],
         Binary:[ 
            Function
         ],
         Code:[ 
            Function
         ],
         Map:[ 
            Function
         ],
         DBRef:[ 
            Function
         ],
         Double:[ 
            Function
         ],
         Int32:[ 
            Function
         ],
         Long:[ 
            Function
         ],
         MinKey:[ 
            Function
         ],
         MaxKey:[ 
            Function
         ],
         ObjectID:[ 
            Function
         ],
         ObjectId:[ 
            Function
         ],
         Symbol:[ 
            Function
         ],
         Timestamp:[ 
            Function
         ],
         Decimal128:[ 
            Function
         ],
         connect:[ 
            Circular
         ],
         instrument:[ 
            Function
         ]
      },
      curCol:'fs'
   },
   options:{ 
      filename:'f9bd6032ceae47a8b8b9be07a5dc839e.jpg',
      data:'1'
   },
   name:'f9bd6032ceae47a8b8b9be07a5dc839e.jpg',
   id:5d9eef3dde7cc73550be84d8,
   mode:'w',
   _store:GridStore{ 
      db:Db{ 
         _events:[ 
            Object:            null prototype
         ]{ 

         },
         _eventsCount:0,
         _maxListeners:undefined,
         s:[ 
            Object
         ],
         serverConfig:[ 
            Getter
         ],
         bufferMaxEntries:[ 
            Getter
         ],
         databaseName:[ 
            Getter
         ]
      },
      referenceBy:1,
      fileId:5d9eef3dde7cc73550be84d8,
      filename:'f9bd6032ceae47a8b8b9be07a5dc839e.jpg',
      mode:'w',
      options:{ 
         filename:'f9bd6032ceae47a8b8b9be07a5dc839e.jpg',
         data:'1'
      },
      isOpen:false,
      root:'fs',
      position:0,
      readPreference:'primary',
      writeConcern:{ 
         w:1
      },
      internalChunkSize:261120,
      promiseLibrary:[ 
         Function:         Promise
      ],
      chunkSize:[ 
         Getter/Setter
      ],
      md5:[ 
         Getter
      ],
      chunkNumber:[ 
         Getter
      ]
   },
   _delayedWrite:null,
   _delayedFlush:null,
   _delayedClose:null
}
var download = function (url, dest, filename callback) {

   const file = filename
    const fileStorage = gfs.createWriteStream({ filename: file});

    // request.get(url)
                    //     .on('error', function (err) { console.log(err) })
                    //     .pipe(fileStorage)
                    //     .on('close', callback);

};

final_list.forEach(function (str) {
    var filename = str.split('/').pop();

    console.log('Downloading ' + filename);

    download(str, filename, function () { console.log('Finished Downloading' + "" + filename) });
});