Не могу понять, почему загружаемый файл получает нулевой размер. Вот код, который загружает файл и записывает его в базу
function upload(req, res) {
if (req.user.guest) {
res
.status({status: 401})
.json(401)
}
else {
const mime = req.headers['content-type']
const size = +req.headers['content-length']
const type = req.config.file.mime[mime]
if (type && size) {
if (size <= type.size) {
const now = Date.now()
const id = now.toString(36) + req.user.id.toString(36)
const filename = id + '.' + type.ext[0]
const tempfilename = path.join(os.tmpdir(), filename)
const temp = fs.createWriteStream(tempfilename)
temp.on('error', res.error)
temp.on('close', function () {
fs.rename(tempfilename, req.config.file.dir + '/' + filename, function (err) {
if (err) {
res.error(err)
}
else {
const data = {
id,
mime,
size,
ip: req.headers.ip,
name: req.params.name,
user: req.user.id
}
res.promise(req.table('file').insert(data)
.then(function () {
data.status = 201
data.success = true
data.url = '/files/' + filename
return data
}))
}
})
})
req.pipe(temp)
}
else {
res
.status(413)
.json({
status: 413,
error: {
message: `Request entity ${mime} too large: ` + size
}
})
}
}
else {
res
.status(415)
.json({
status: 415,
error: {
message: 'Unsupported media type: ' + type
}
})
}
}
}
И он раньше работал (насколько я помню), но теперь в файла нулевой размер. Код писался, когда был установлен Node.js 6.*, сейчас Node.js v7.7.3 В резуальтате получаю правильний ответ, но загружаемий файл имеет нулевой размер
{
"id":"j0l3hagb2",
"mime":"image/jpeg",
"size":221518,
"ip":"127.0.0.1",
"name":"stock-photo-142984111-1500x1000.jpg",
"user":2,
"status":201,
"success":true,
"url":"/files/j0l3hagb2.jpeg"
}
Используется свой фреймворк, которий расширяет express.js