node(multer)上传文件

news/2024/12/11 18:33:31/

node(multer)上传文件

from表单上传文件

前端代码

import React from 'react';
import { Form, Button, Upload, message } from 'antd';
import { UploadOutlined } from '@ant-design/icons';
import axios from 'axios';const FileUploadForm = () => {const onFinish = async (values) => {const formData = new FormData();const file = values.file[0].originFileObj;  // 获取文件formData.append('file', file);try {const response = await axios.post('http://localhost:5000/upload', formData, {headers: {'Content-Type': 'multipart/form-data',},});message.success('文件上传成功');} catch (error) {message.error('文件上传失败');}};return (<Form onFinish={onFinish}><Form.Itemname="file"label="上传文件"rules={[{ required: true, message: '请选择一个文件!' }]}><UploadbeforeUpload={() => false}  // 阻止自动上传,手动处理上传accept=".jpg,.png,.pdf,.docx,.txt"  // 设置文件类型限制><Button icon={<UploadOutlined />}>选择文件</Button></Upload></Form.Item><Form.Item><Button type="primary" htmlType="submit">上传</Button></Form.Item></Form>);
};export default FileUploadForm;

后端代码

const express = require('express');
const multer = require('multer');
const path = require('path');
const app = express();
const PORT = 5000;// 配置 multer 存储选项
const storage = multer.diskStorage({destination: (req, file, cb) => {cb(null, 'uploads/'); // 文件保存的目录},filename: (req, file, cb) => {cb(null, Date.now() + path.extname(file.originalname)); // 保证文件名唯一},
});// 创建 multer 实例
const upload = multer({ storage: storage });// 创建上传路由
app.post('/upload', upload.single('file'), (req, res) => {// 检查文件是否上传if (!req.file) {return res.status(400).send('没有文件上传');}res.status(200).send({message: '文件上传成功',file: req.file,});
});// 设置静态目录,使得可以通过 URL 访问上传的文件
app.use('/uploads', express.static('uploads'));app.listen(PORT, () => {console.log(`Server is running on http://localhost:${PORT}`);
});


http://www.ppmy.cn/news/1554291.html

相关文章

Three.js曲线篇 8.管道漫游

目录 创建样条曲线 创建管道 透视相机漫游 完整代码 大家不要被这个“管道漫游”这几个字所蒙骗了&#xff0c;学完后大家就知道这个知识点有多脏了。我也是误入歧途&#xff0c;好奇了一下“管道漫游”。好了&#xff0c;现在就给大家展示一下为啥这个只是点脏了。 我也废话…

用友U8+ API接口使用教程

前言 U8和其他的公开的开放API接口有一些差异&#xff0c;他是需要先对接的到代理服务器&#xff0c;通过代理服务器进行对接&#xff0c;所以只要保证U8能上网就能对接&#xff0c;和畅捷通T的模式有点类似 流程&#xff1a; 注册成为开发者&#xff08;用于创建用友U8 API应…

解决uview ui赋值后表单无法通过验证

微信小程序中 主要还是文档有这样一段话&#xff1a;//如果需要兼容微信小程序&#xff0c;并且校验规则中含有方法等&#xff0c;只能通过setRules方法设置规则。 添加即可通过 onReady() {//如果需要兼容微信小程序&#xff0c;并且校验规则中含有方法等&#xff0c;只能通过…

在react中使用组件的标签页写订单管理页面

在制作商城类的项目中&#xff0c;成功购物后&#xff0c;会生成订单&#xff0c;我们跳转到订单页面后就会需要使用这个标签页的组件。 首先呢我需要一个来渲染标签标题的一个数组。但是可以更便捷的方法就是直接将数组写入tabs标签内就进行遍历渲染。 // 使用styleCss对象中…

Day2——需求分析与设计

教师端签到应用软件的需求分析&#xff1b; 产品经理如何写好产品需求文档&#xff08;附模板&#xff09; 需求分析是软件开发过程中的关键步骤&#xff0c;它确保了开发的软件能够满足用户的需求。以下是进行需求分析的具体步骤&#xff1a; 1. 确定分析目标 明确教师端签到…

使用go生成、识别二维码

1、下载 # 创建目录 # 进入目录 # 执行 go mod init xxx 命令&#xff08;即&#xff1a;在当前目录初始化创建一个模块&#xff09;# 下载gozxing go get github.com/makiuchi-d/gozxing 2、生成二维码 package mainimport ("image/png""os""gith…

EMQ分布式MQTT消息服务器部署指南

1. EMQ简介 EMQ(Erlang MQTT Broker) 是基于Erlang/OTP平台开发的开源MQTT消息服务器,支持百万级连接和分布式集群。主要特点: 完整支持MQTT v3.1/v3.1.1/v5.0协议支持WebSocket协议支持分布式集群支持SSL/TLS加密传输提供Web管理控制台2. EMQ默认端口说明 EMQ默认开启以下服…

fastadmin集成xunsearch实战应用

背景 项目需求用到搜索引擎功能&#xff0c;fastadmin框架有比较成熟的插件xunsearch&#xff0c;如何灵活的提供给第三方产品使用。实战中根据不同条件查询记录 示例 //全文搜索public function search(){$keywords $this->request->request(keywords);$type (int)…