首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用formidable/express时,文件不会写入磁盘

使用formidable/express时,文件不会写入磁盘
EN

Stack Overflow用户
提问于 2020-04-17 13:04:00
回答 1查看 215关注 0票数 0

我有一个非常简单的节点脚本,应该只显示一个静态网页与上传表单,并写入任何上传的文件到磁盘。

代码语言:javascript
复制
const formidable = require('formidable')
const http = require('http')
var fs = require('fs');

const app = express()
const serve = http.Server(app)
const PORT = process.env.PORT || '5000'

// Display upload page at root
app.use(express.static('../client'))

//Start HTTP with express
serve.listen(PORT, () => {
    console.log(`Listening on ${PORT}`)
})

app.post('/submit-form', function (req, res){
    var form = new formidable.IncomingForm();

    form.on('fileBegin', function (name, file){
        file.path = __dirname + '/uploads/' + file.name;
    });

    form.parse(req);

    form.on('file', function (name, file){
        console.log('Uploaded ' + file.name);
    });

});

app.listen()

页面显示正常,并按预期发送了一个post请求,但在上传后收到以下错误:

代码语言:javascript
复制
Error: ENOENT: no such file or directory, open ' the path where the upload should be '
Emitted 'error' event at:
    at lazyFs.open (internal/fs/streams.js:273:12)
    at FSReqWrap.oncomplete (fs.js:141:20)

我找不到任何有类似错误的人,但我假设我可能正在做一些愚蠢的事情。

有人能帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2020-09-05 03:31:29

在监听事件之前,您必须先解析请求。试试这个:

代码语言:javascript
复制
app.post('/submit-form', function (req, res){
    var form = new formidable.IncomingForm();

    form.parse(req)
        .on('fileBegin', function (name, file){
            file.path = __dirname + '/uploads/' + file.name;
        })
        .on('file', function (name, file){
            console.log('Uploaded ' + file.name);
        });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61264473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档