所以我正在制作一个文件上传网站,当文件上传时,它会呈现一个上传页面,上面写着它正在上传文件,但是在尝试呈现成功页面时,它不会这样做,因为页面已经被呈现。我将如何使它呈现成功页面?
部门:Express、Express-FileUpload、EJS(用于视图引擎)
代码:
const express = require('express')
const upload = require('express-fileupload')
const crypto = require('crypto')
uploadDisabledM = {
'message': 'Uploading has been disabled for new users.', // This was for testing at the start
'code': 'UPL_DISABLED'
}
noFilesProvidedM = {
'message': 'No files were provided.',
'code': 'NO_FILE_PROV'
}
const app = express()
const http = require('http').Server(app).listen(80)
app.use(express.static('public'))
app.use(upload())
app.set('view engine', 'ejs')
app.get('/', (res, req) => {
return req.render('index')
})
app.get('/upload', (res, req) => {
req.redirect('/')
})
app.post('/upload', (res, req) => {
let file
let ID
let uploadPath
if (!res.files || Object.keys(res.files).length === 0) {
return req.status(400).render('error', {
error: noFilesProvidedM.message,
code: noFilesProvidedM.code
})
}
file = res.files.sampleFile
ID = crypto.randomBytes(5).toString('hex')
uploadPath = `${__dirname}/uploads/${ID}-${file.name}`
endingFileName = `${ID}-${file.name}`
req.render('loading')
file.mv(uploadPath, (err) => {
if(err){
res.status(500).render('error', {
error: err.message,
code: 500
})
}
})
return req.render('success', { filename: endingFileName })
})
错误:
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client