首页 > 解决方案 > 节点快递返回“无法获取”其他解决方案/代码不起作用。上传文件

问题描述

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); };

标签: node.jsexpressfile-upload

解决方案


我们的意思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 /方法,因为它是在您的应用程序中未使用的路由器级别上配置的。

来源:快递路由


推荐阅读