我试图修改一些ExpressJS代码(见下文),我在网上找到处理从Python脚本发送的传入文件,并将它们存储在所需的文件夹中…根据我编写的脚本,我怀疑由于我没有传递uploadDisk.single("image")值,服务器无法处理POST请求(不确定如何完成此任务)。有什么好主意吗?
谢谢,
注:逻辑工作使用Postman
ExpressJS代码:
const express = require("express");
const bp = require("body-parser");
const port = 5000;
const app = express();
const multer = require("multer");
app.use(bp.urlencoded({ extended: false }));
app.use(bp.json());
app.use(require("morgan")("dev"));
var storage = multer.diskStorage({
destination: function(req, file, cb) {
cb(null, "./"); // here we specify the destination . in this case i specified the current directory
},
filename: function(req, file, cb) {
console.log(file);
cb(null, file.originalname);// here we specify the file saving name . in this case i specified the original file name
}
});
var uploadDisk = multer({ storage: storage });
app.get("/", (req, res) => {
res.send("hello world");
});
app.post("/fileuploaddisk", uploadDisk.single("image"), (req, res) => {
console.log(" file disk uploaded");
res.send("file disk upload success");
});
app.listen(port, '192.168.1.231', () => {
console.log("Express server listning on port " + port);
});
Python代码:
import requests
url = 'http://x.x.x.x:5000/fileuploaddisk'
files = {'file': open('/home/pi/Desktop/test.zip', 'rb')}
response = requests.post(url, files=files)
response.text
print(response)
输出:
POST /fileuploaddisk 500 647.480 ms - 1232
MulterError: Unexpected field
at wrappedFileFilter (C:UsersxDesktopudcServiceServernode_modulesmulterindex.js:40:19)
at Busboy.<anonymous> (C:UsershfranyieDesktopudcServiceServernode_modulesmulterlibmake-middleware.js:114:7)
at Busboy.emit (events.js:311:20)
at Busboy.emit (C:UsersxDesktopudcServiceServernode_modulesbusboylibmain.js:38:33)
at PartStream.<anonymous> (C:UsersxDesktopudcServiceServernode_modulesbusboylibtypesmultipart.js:213:13)
at PartStream.emit (events.js:311:20)
at HeaderParser.<anonymous> (C:UsersxDesktopudcServiceServernode_modulesdicerlibDicer.js:51:16)
at HeaderParser.emit (events.js:311:20)
at HeaderParser._finish (C:UsersxDesktopudcServiceServernode_modulesdicerlibHeaderParser.js:68:8)
at SBMH.<anonymous> (C:UsersxDesktopudcServiceServernode_modulesdicerlibHeaderParser.js:40:12)
在ExpressJS代码中,有一行uploadDisk.single("image")
,服务器期望一个名为image的文件。
但是在Python代码中,我看不到文件的任何名称。tryfiles = {'file': ('image', '/home/pi/Desktop/test.zip', 'rb')}