/
moreqqq
/
DeliveryService
Обзор
Документация
Войти
/
moreqqq
/
DeliveryService
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
server/node_modules/multer/storage/disk.js
65 строк
2 KB
moreqqq
написал тесты
29 май 2026, 22:13
29 май 2026, 22:13
6f740ff
Код
Авторство
О чём код?
var fs = require('fs') var os = require('os') var path = require('path') var crypto = require('crypto') function getFilename (req, file, cb) { crypto.randomBytes(16, function (err, raw) { cb(err, err ? undefined : raw.toString('hex')) }) } function getDestination (req, file, cb) { cb(null, os.tmpdir()) } function DiskStorage (opts) { this.getFilename = (opts.filename || getFilename) if (typeof opts.destination === 'string') { fs.mkdirSync(opts.destination, { recursive: true }) this.getDestination = function ($0, $1, cb) { cb(null, opts.destination) } } else { this.getDestination = (opts.destination || getDestination) } } DiskStorage.prototype._handleFile = function _handleFile (req, file, cb) { var that = this 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('finish', function () { cb(null, { destination: destination, filename: filename, path: finalPath, size: outStream.bytesWritten }) }) }) }) } DiskStorage.prototype._removeFile = function _removeFile (req, file, cb) { var path = file.path delete file.destination delete file.filename delete file.path fs.unlink(path, cb) } module.exports = function (opts) { return new DiskStorage(opts) }