node.js - 节点快递返回“无法获取”其他解决方案/代码不起作用。上传文件
问题描述
tldr
好的,我一直试图让文件上传服务器工作几天,而我尝试的所有东西都无法返回。我目前正在尝试下面的设置,但它不起作用
代码
这是 server.js
const express = require("express");
const upload = require("./upload");
const cors = require("cors");
var router = express.Router();
var app = express();
const server = express();
var corsOptions = {
origin: "*",
optionsSuccessStatus: 200
};
server.use(cors(corsOptions));
router.get("/", function(req, res) {
res.render("index", { title: "Express" });
});
server.post("/upload", upload);
const port = process.env.PORT || 8000;
app.listen(port, () => {
console.log(`listening on port ${port}`);
});
下面是upload.js
const IncomingForm = require("formidable").IncomingForm;
module.exports = function upload(req, res) { var form = new IncomingForm();
form.on("file", (field, file) => {
// Do something with the file
// e.g. save it to the database
// you can access it using file.path
console.log("thisno werk"); }); form.on("end", () => {
res.json(); }); form.parse(req); };
解决方案
我们的意思server
是 的结果const server = require('express')();
和router
的结果const router = require('express').Router();
。
server
是您的 Express 服务器router
的实例,同时是 API 端点路由器的实例。您不仅需要编写路由器router.get();
,还需要设置适当的文件(所谓的控制器)来处理 API 请求。
所以你的代码应该有这一行:server.use('/', yourController);
或者只是server.get('/', handlingFunction);
如果你没有 API 部分。
但是,如果您使用路由器,则需要第一个变体。您的POST /upload
方法效果很好,因为它是在应用程序级别配置的。但是您需要修复您的GET /
方法,因为它是在您的应用程序中未使用的路由器级别上配置的。
来源:快递路由
推荐阅读
- java - 不兼容的类型。找到:'org.springframework.beans.factory.annotation.Value',需要:'long'
- javascript - 根据属性将所有对象分离并分组到一个新数组中
- jenkins - 如何停止从管道脚本执行构建?
- c# - 实例化类的集合?
- c# - Mapper 不包含 Initialize AutoMapper C# 的定义
- powerbi - 将时间戳溢出到流分析中的单独列中,以便在 Power BI 中进行进一步筛选
- python - 下划线在 Python 的 print 函数中的作用是什么?
- android - Jetpack Compose - 立柱 - 重心
- laravel - 只有一个刀片而不是 12 个
- javascript - 如何从 JavaScript 中的 JSON 树获取嵌套的父路径?