Вопрос:

Получать всегда один и тот же хэш с Node.js и Multer

node.js hash md5 multer sha256

17 просмотра

1 ответ

6 Репутация автора

Я пытался изменить файл multer / storage / disk.js, чтобы я мог хранить хэш каждый раз, когда загружаю файл, но факт в том, что я всегда получаю один и тот же хэш, даже загружая разные файлы.

Это то, что я сделал.

DiskStorage.prototype._handleFile = function _handleFile (req, file, cb) {

  var that = this
  var hash = crypto.createHash('sha256')

  that.getDestination(req, file, function (err, destination) {
    if (err) return cb(err)

    that.getFilename(req, file, function (err, filename) {
      if (err) return cb(err)

      var finalPath = path.join(destination, filename)
      var outStream = fs.createWriteStream(finalPath)

      file.stream.pipe(outStream)
      outStream.on('error', cb)
      outStream.on('data', function (chunk) {
        hash.update(chunk)
      })

      outStream.on('finish', function () {
        cb(null, {
          destination: destination,
          filename: filename,
          path: finalPath,
          size: outStream.bytesWritten,
          hash: hash.digest('hex')

        })
      })
    })
  })
}

Как будто этот раздел ничего не делает

outStream.on('data', function (chunk) {
        hash.update(chunk)
      })
Автор: CharlyRos Источник Размещён: 22.05.2019 04:23

Ответы (1)


0 плюса

13 Репутация автора

Существует обсуждение этой проблемы в github Multers: https://github.com/expressjs/multer/issues/248

microacup опубликовал это о коде suhaotion (который выглядит как ваш)

DiskStorage.prototype._handleFile = function _handleFile (req, file, cb) {
...
  file.stream.on('data', function (chunk) {
      hash.update(chunk)
  })

...

вместо

DiskStorage.prototype._handleFile = function _handleFile (req, file, cb) {
...
  outStream.on('data', function (chunk) {
      hash.update(chunk)
  })

...
Автор: cpuchip Размещён: 12.06.2019 10:20
Вопросы из категории :
32x32