2

所以我正在制作一个文件上传网站,当文件上传时,它会呈现一个上传页面,上面写着它正在上传文件,但是在尝试呈现成功页面时,它不会这样做,因为页面已经被呈现。我将如何使它呈现成功页面?

部门: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
4

0 回答 0