如何使用 express 上传和读取文件
how to upload and read a file with express
我已经 question.I 在这里查看了一些问题,但我无法得到 answer.My 问题是,我想上传并阅读 json 文件,我尝试使用 "multer" 但不能't.So 我想将我上传的文件放入结果变量。你能帮助我吗?我怎样才能做到这一点?
HTML;
<!DOCTYPE html>
<html lang="en">
<head></head>
<body>
<form action="/import" enctype="multipart/form-data" method="post">
<input type="file" name="filename">
<input type="submit" value="Upload">
</form>
</body>
</html>
Server.js
const express = require('express');
const multer = require('multer');
const upload = multer({
dest: 'uploads/' // "uploads"
});
const app = express();
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
route.post("/import", upload.single("filename") (req, res, next) => {
var result = require(# I want to send the json file I uploaded here, and I need to see the contents of the json file as is #)
res.json(result)
res.redirect("/")
});
app.listen(3000);
upload.single()
根据配置解析数据流并保存为文件。在您的情况下,它将在传入请求中查找 filename
字段并将文件保存在 uploads/
文件夹中。文件的元数据在 req.file
对象中可用。您只需执行 console.log(req.file)
即可查看信息。
要读取文件的内容,可以使用req.file.path
字段。方法如下:
const fs = require("fs");
const path = require("path");
/** In the controller */
const absolutePath = path.join(__dirname, req.file.path);
const jsonString = fs.readFileSync(absolutePath, "utf-8");
const jsonObject = JSON.parse(jsonString);
console.log(jsonObject);
这是完整的 server.js
的样子:
const express = require("express");
const multer = require("multer");
const fs = require("fs");
const path = require("path");
const upload = multer({
dest: "uploads/" // "uploads"
});
const app = express();
app.get("/", (req, res) => {
res.sendFile(__dirname + "/index.html");
});
const route = express.Router();
route.post("/import", upload.single("filename"), (req, res, next) => {
console.log(req.file);
const absolutePath = path.join(__dirname, req.file.path);
const jsonString = fs.readFileSync(absolutePath, "utf-8");
const jsonObject = JSON.parse(jsonString);
console.log(jsonObject);
res.redirect("/");
});
app.use(route);
app.listen(3000);
我添加了您的代码段中缺少的一些部分(例如 express.Router
)。不过它们可能有所不同。
我已经 question.I 在这里查看了一些问题,但我无法得到 answer.My 问题是,我想上传并阅读 json 文件,我尝试使用 "multer" 但不能't.So 我想将我上传的文件放入结果变量。你能帮助我吗?我怎样才能做到这一点?
HTML;
<!DOCTYPE html>
<html lang="en">
<head></head>
<body>
<form action="/import" enctype="multipart/form-data" method="post">
<input type="file" name="filename">
<input type="submit" value="Upload">
</form>
</body>
</html>
Server.js
const express = require('express');
const multer = require('multer');
const upload = multer({
dest: 'uploads/' // "uploads"
});
const app = express();
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
route.post("/import", upload.single("filename") (req, res, next) => {
var result = require(# I want to send the json file I uploaded here, and I need to see the contents of the json file as is #)
res.json(result)
res.redirect("/")
});
app.listen(3000);
upload.single()
根据配置解析数据流并保存为文件。在您的情况下,它将在传入请求中查找 filename
字段并将文件保存在 uploads/
文件夹中。文件的元数据在 req.file
对象中可用。您只需执行 console.log(req.file)
即可查看信息。
要读取文件的内容,可以使用req.file.path
字段。方法如下:
const fs = require("fs");
const path = require("path");
/** In the controller */
const absolutePath = path.join(__dirname, req.file.path);
const jsonString = fs.readFileSync(absolutePath, "utf-8");
const jsonObject = JSON.parse(jsonString);
console.log(jsonObject);
这是完整的 server.js
的样子:
const express = require("express");
const multer = require("multer");
const fs = require("fs");
const path = require("path");
const upload = multer({
dest: "uploads/" // "uploads"
});
const app = express();
app.get("/", (req, res) => {
res.sendFile(__dirname + "/index.html");
});
const route = express.Router();
route.post("/import", upload.single("filename"), (req, res, next) => {
console.log(req.file);
const absolutePath = path.join(__dirname, req.file.path);
const jsonString = fs.readFileSync(absolutePath, "utf-8");
const jsonObject = JSON.parse(jsonString);
console.log(jsonObject);
res.redirect("/");
});
app.use(route);
app.listen(3000);
我添加了您的代码段中缺少的一些部分(例如 express.Router
)。不过它们可能有所不同。