node.js - 用nodejs上传文件,multer,react
问题描述
我正在尝试从前端上传文件(在反应中)并保存到服务器中的文件系统。当我向服务器发出请求时,请求成功,但文件没有保存到我的文件系统中。当我控制台记录 req.file 时,我得到一个“未定义”(在服务器端)。
服务器.js
const express = require('express')
const app = express()
const port = 5000
const fs = require('fs');
const path = require('path');
const childProcess = require('child_process');
//const { request } = require('express');
const multer = require("multer");
app.use(express.bodyParser({limit: '500000mb'}));
const storage = multer.diskStorage({
destination: function(req, file, cb){
cb(null, "upload/");
},
filename: function(req, file, cb){
console.log(req);
cb(null, "test.png");
}
})
const upload = multer({storage});
app.post("/model", upload.single("file"), (req, res) => {
console.log(req.files);
res.send("files received");
})
app.use(express.static('build'));
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
});
addBtn.js
import React, { Component } from "react";
import axios from 'axios';
class AddBtn extends Component{
render(){
return(
<div className="form">
<form method="post" enctype="multipart/form-data" action="/model">
<input type="file" name="file" />
<input type="submit" value="upload" />
</form>
</div>
);
}
}
export default AddBtn;
当我 console.log(req.files) 我得到:
{ file:
{ fieldName: 'file',
originalFilename: 'requerimento.png',
path: '/tmp/37648-1b0v335.qt09.png',
headers:
{ 'content-disposition': 'form-data; name="file"; filename="requerimento.png"',
'content-type': 'image/png' },
ws:
WriteStream {
_writableState: [WritableState],
writable: false,
_events: [Object],
_eventsCount: 2,
_maxListeners: undefined,
path: '/tmp/37648-1b0v335.qt09.png',
fd: null,
flags: 'w',
mode: 438,
start: undefined,
autoClose: true,
pos: undefined,
bytesWritten: 30082,
closed: true },
size: 30082,
name: 'requerimento.png',
type: 'image/png' } }
当我在 filename: 函数中使用 console.log 时,它不会在屏幕上打印任何内容
我遵循本教程https://www.youtube.com/watch?v=-3ePnBWFH9o并且它有效,但是当我尝试在我的代码(使用反应)中实现它时它失败了,我不知道为什么。谁能告诉我我做错了什么?
解决方案
推荐阅读
- r - 创建一个连续字母列表,如 R 中 excel 的标题
- junit - 使用 AspectJ 记录单元测试结果
- python - 将字符串 iso 格式日期字段转换为实际 iso 格式类型以使用 python 存储在 mongodb 中
- java - Spring AOP 执行不适用于多个参数
- java - Android 中 Adapter.onBindViewHolder 中的 IndexOutOfBoundsException
- python - 使用同一列的值总和进行转换
- c - 如何在这段代码中制作算术下溢?
- c# - 带有 COM 库的 IIS 和 IISExpress
- docker - 在 jenkinsci/blueocean 镜像中使用 docker
- azure - 对于超过 20MB 的文件,逻辑应用“获取文件内容”Sharepoint 连接器超时