gpt4 book ai didi

node.js - 当我在 Node.js 中上传文件时,Formidable 总是返回空字段和文件

转载 作者:行者123 更新时间:2023-12-04 13:23:18 25 4
gpt4 key购买 nike

基本上我想从本地计算机上传一个 csv 文件并在后端解析它以执行所需的操作。我在前端附加了 csv 文件。检查它不是空的。但是我无法在服务器中获取相同的内容。
我有什么遗漏或以错误的方式做的吗?

这是我迄今为止所尝试的。

前端代码:

   <form id="myForm" method="POST" enctype="multipart/form-data" action='/testcsv' >
<input type="file" id="file" />
<input type="submit" value="Submit">
</form>

后端代码:
 var express = require('express');
var methodOverride = require('method-override');
var http = require('follow-redirects').http;
var formidable = require('formidable');
var app = express();
const fs = require('fs');
app.use(methodOverride('_method'));

var bodyParser = require('body-parser');
app.use(bodyParser.json()); // support json encoded bodies
app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies



app.post('/testcsv', requireLogin, function(req, res) {

var form = new formidable.IncomingForm();

form.parse(req, function(err, fields, files) {

console.log(err);
console.log(fields);
console.log(files);

});

});

日志输出:
 null
{}
{}

最佳答案

这个问题是由 Frontend 代码引起的,与 Backend 代码无关(厉害)。

对于以下 console.log 语句:

console.log(err);
console.log(fields);
console.log(files);
  • errnull因为没有错误。
  • fields{}因为在表单中,所有输入字段都是文件选择器。 fields在 formidable 中只表示纯输入字段,如 <input type="text"> .
  • files{}因为name缺少表单中的文件选择器。

  • 为了获得期望值,这里是一个示例表单:
    <form id="myForm" method="POST" enctype="multipart/form-data" action='/testcsv' >
    <input type="text" name="testtext" />
    <input type="file" id="file" name="testfile" />
    <input type="submit" value="Submit">
    </form>
    console.log上述表格的结果将是:
    null
    { testtext: '....' }
    { testfile: File....}

    关于node.js - 当我在 Node.js 中上传文件时,Formidable 总是返回空字段和文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45892610/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com