gpt4 book ai didi

javascript - Node js multer 文件上传不起作用。 req.file 和 req.files 始终未定义

转载 作者:太空宇宙 更新时间:2023-11-04 03:03:09 28 4
gpt4 key购买 nike

我正在尝试将文件上传到我的服务器,但 req.filereq.files 在我的 POST REST 端点上始终未定义。

我尝试上传的内容是“.dat”文件,我期待 json 响应。

这是我的代码:

服务器端:

var express = require('express');
var multer = require('multer')
var upload = multer({ dest: 'uploads/' })

var app = express()

app.post('/creoUpload', upload.single('uploadFileField'), function(req, res, next) {
console.log("req.file = ",JSON.stringify(req.file)); //is undefined
console.log("req.files = ",JSON.stringify(req.files)); //also undefined
});

客户端:

<form id="creoUploadForm" action="/creoUpload" enctype="multipart/form-data" method="post">
<input type='file' name='uploadFileField'><br><br>
<input type='submit' value='Upload'/>
</form>

JS:

$( "#creoUploadForm" ).submit(function( event ) {
event.preventDefault();
var formData = new FormData($(this)[0]);
$.ajax({
url: '/creoUpload',
type: 'POST',
data: formData,
async: true,
cache: false,
contentType: false,
processData: false,
success: function (returndata) {
console.log("RETURN DATA IS: ",returndata);
},
error: function (err) {
console.log("ERROR: ",err);
}
});
});

我一直在田野里玩耍,但它不起作用......有人看到我在这里做错了什么吗?

我正在遵循 https://www.npmjs.com/package/multer 中的示例

版本:

  • 快捷版本:4.12.0
  • Node 版本:6.5.0
  • JQuery:1.12.1

谢谢!

最佳答案

您正在使用 multer 作为中间件,因此在进入您的函数并打印之前,已将图像上传到存储并从req.files中删除记录。

有两种方法可以访问 req.files。

  1. 使用 multer 作为 finw3 指定的函数。

  2. 另一个解决方案是:

//代码开始

var storage = multer.diskStorage({

destination: function (req, file, cb) {

cb(null, '/filepath')
},


filename: function (req, file, cb) {

let filename = 'filenametogive';
req.body.file = filename

cb(null, filename)
}
})

var upload = multer({ storage: storage })

//代码结束

现在您可以访问 req.body.file 中的文件

关于javascript - Node js multer 文件上传不起作用。 req.file 和 req.files 始终未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48958307/

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