node(multer)上传文件

ops/2024/12/12 7:55:48/

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/ops/141198.html

相关文章

JDK HTTP 服务器:真实世界后端开源演示

JDK HTTP Server代码库包含真实的世界的示例&#xff08;CRUD&#xff0c;auth&#xff0c;高级模式等&#xff09;&#xff0c; 创建此代码库是为了演示使用JDK HTTP Server构建的完全成熟的全栈应用程序&#xff0c;包括CRUD操作&#xff0c;身份验证&#xff0c;路由&#…

Node.js新作《循序渐进Node.js企业级开发实践》简介

《循序渐进Node.js企业级开发实践》由清华大学出版社出版&#xff0c;已于近期上市。该书基于Node.js 22.3.0编写&#xff0c;提供26个实战案例43个上机练习&#xff0c;可谓是目前市面上最新的Node.js力作。 本文对《循序渐进Node.js企业级开发实践》一书做个大致的介绍。 封…

188-下翻便携式6U CPCI工控机箱

一、板卡概述 下翻式CPCI便携工控机,系统采用6u cpci背板结构,1个系统槽,7个扩展槽, 满足对携带的需求,可装标准6U8槽CPCI主板,8个扩展槽, 满足客户对空间扩展的需求.可宽温服务的工作产品,15高亮度液晶显示屏,超薄88键笔记本键盘,触摸式鼠标,加固型机箱结构,使它能够适应各种复…

CSS常用的尺寸单位

像素px 以屏幕上的一个点为单位&#xff0c;比较稳定和精确用的最多 em 以字体大小为参考&#xff0c;&#xff08;是自身字体大小的倍数&#xff09;当自身的字体大小改变时&#xff0c;em也会随着改变em * font-size px rem 以根元素 < html > 作为参考&#xff…

一款免费、简单、快速的JS打印插件,web 打印组件,基于JavaScript开发,支持数据分组,快速分页批量预览,打印,转pdf,移动端,PC端

前言 在数字化办公时代&#xff0c;打印需求呈现多样化和复杂化的趋势。现有的打印软件往往存在cao作繁琐、兼容性差、功能单一等问题&#xff0c;难以满足现代企业高效、灵活的打印需求。 为了解决这些痛点&#xff0c;一款简单、高效、多功能的打印插件成为了迫切需求。 介…

基于go中fyne gui的通达信数据导出工具

这是一个用 Go 语言开发的通达信数据导出工具&#xff0c;可以将通达信的本地数据导出为多种格式&#xff0c;方便用户进行数据分析和处理。 主要功能 支持多种数据类型导出&#xff1a; 日线数据 5分钟线数据 1分钟线数据 支持多种导出格式&#xff1a; CSV 格式 SQLi…

生成SSH秘钥文件

git生成文件命令 # 配置用户名和邮箱 git config --global user.name "你的GitHub用户名" git config --global user.email "你的GitHub邮箱"# 生成ssh-key ssh-keygen -t rsa -C “你的GitHub邮箱" # 验证 ssh -T gitgithub .com 第一步&#xff1a;…

HNSW 分布式构建实践

作者&#xff1a;魏子敬 一、背景 随着大模型时代的到来&#xff0c;向量检索领域面临着前所未有的挑战。embedding 的维度和数量空前增长&#xff0c;这在工程上带来了极大的挑战。智能引擎事业部负责阿里巴巴搜推广及 AI 相关工程系统的设计和建设&#xff0c;我们在实际业务…