如何使用Python脚本上传文件到ExpressJS服务器?



我试图修改一些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')}

最新更新