Можно ли получить хеш-значение md5 для файла, используя fs-файл mongo, загружаемый с сервера, перед сохранением файла в базе данных mongo. Теперь, используя приведенный ниже код, он сохраняет данные прямо в mongo с md5, filename, contenttype и т. Д., Потому что я использовал pipe. Теперь я хочу проверить md5-хеш файла, прежде чем сохранять его в базе данных, я хочу получить md5-значение файла, потому что я хочу использовать его, чтобы избежать дублирования. Теперь я попытался войти в файл хранилища. но я не думаю, что он содержит MD5. Любая идея? благодарю вас. Кстати, я использую сетку Монго FS
данные хранилища файлов
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) });
});