Можно ли получить хэш-значение md5 для файла, загружаемого с сервера? - PullRequest
0 голосов
/ 10 октября 2019

Можно ли получить хеш-значение 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) });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...