React AntDesign form表单文件上传 nodejs formidable 接受参数并把文件放置后端项目相对目录指定文件夹下面

本文主要是介绍React AntDesign form表单文件上传 nodejs formidable 接受参数并把文件放置后端项目相对目录指定文件夹下面,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

@umijs/max 请求方法

// 上传文件改成form表单
export async function uploadFile(data, options) {return request(CMMS_UI_HOST + '/api/v1/uploadFile', {method: 'POST',data,requestType: 'form',...(options || {}),});
}

前端调用方法 注意upload组件上传 onChange的如下方法,参数 info.file.originFileObj 才是真正的file对象,不要直接使用info.file

 const handleChange = async (info) => {if (info.file.status === 'uploading') {setLoading(true);return;}if (info.file.status === 'done') {let formData = new FormData();formData.append('file', info.file.originFileObj);const res = await services.system.uploadFile(formData);if (res.success) {setImageUrl(res.data)}setLoading(false);}};
后端方法 使用了formidable 模块

const express = require(‘express’);
const app = express();
const path = require(‘path’);
const { v4: uuidv4 } = require(‘uuid’);
const formidable = require(‘formidable’);
const uuid = uuidv4();
const fs = require(‘fs’);

app.post('/api/v1/uploadFile', async (req, res) => {try {const form = new formidable.IncomingForm({keepExtensions: true,//保留文件后缀名uploadDir: path.join(__dirname, '../uploads/'), //指定存放目录});form.parse(req, (err, _, files) => {if (err) throw err;let filename = files.file[0].originalFilename;//获取文件后缀名let suffix = filename.substring(filename.lastIndexOf('.'));//新文件名let newFilename = uuid + suffix;//替换源文件名fs.renameSync(files.file[0].filepath,path.join(__dirname, '../uploads/', newFilename),);res.send({success: true,data:`${req.protocol}://${req.hostname}:${process.env.SERVER_PORT}/` +newFilename,errorCode: 0,});});} catch (error) {res.send({success: false,errorCode: 1,});}});
实际效果

前端请求

在这里插入图片描述

后端上传后文件夹图片

在这里插入图片描述

以上文件夹下的图片资源默认浏览器客户端是不能访问的
需要nodejs 后端开启相关资源访问权限。需要用到如下代码
注意这个 express.static 中的path路径是相对路径

const app = express();
app.use(express.static(path.join(__dirname, './uploads')));
最后看一下实际访问效果

在这里插入图片描述

这篇关于React AntDesign form表单文件上传 nodejs formidable 接受参数并把文件放置后端项目相对目录指定文件夹下面的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/534252

相关文章

详解Vue如何使用xlsx库导出Excel文件

《详解Vue如何使用xlsx库导出Excel文件》第三方库xlsx提供了强大的功能来处理Excel文件,它可以简化导出Excel文件这个过程,本文将为大家详细介绍一下它的具体使用,需要的小伙伴可以了解... 目录1. 安装依赖2. 创建vue组件3. 解释代码在Vue.js项目中导出Excel文件,使用第三

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

Java实现Excel与HTML互转

《Java实现Excel与HTML互转》Excel是一种电子表格格式,而HTM则是一种用于创建网页的标记语言,虽然两者在用途上存在差异,但有时我们需要将数据从一种格式转换为另一种格式,下面我们就来看看... Excel是一种电子表格格式,广泛用于数据处理和分析,而HTM则是一种用于创建网页的标记语言。虽然两

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

mac中资源库在哪? macOS资源库文件夹详解

《mac中资源库在哪?macOS资源库文件夹详解》经常使用Mac电脑的用户会发现,找不到Mac电脑的资源库,我们怎么打开资源库并使用呢?下面我们就来看看macOS资源库文件夹详解... 在 MACOS 系统中,「资源库」文件夹是用来存放操作系统和 App 设置的核心位置。虽然平时我们很少直接跟它打交道,但了

Python如何使用seleniumwire接管Chrome查看控制台中参数

《Python如何使用seleniumwire接管Chrome查看控制台中参数》文章介绍了如何使用Python的seleniumwire库来接管Chrome浏览器,并通过控制台查看接口参数,本文给大家... 1、cmd打开控制台,启动谷歌并制定端口号,找不到文件的加环境变量chrome.exe --rem

通过C#获取PDF中指定文本或所有文本的字体信息

《通过C#获取PDF中指定文本或所有文本的字体信息》在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响,然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文... 目录引言C# 获取PDF中指定文本的字体信息C# 获取PDF文档中用到的所有字体信息引言在设计和出

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne