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

相关文章

前端高级CSS用法示例详解

《前端高级CSS用法示例详解》在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交互和动态效果的关键技术之一,随着前端技术的不断发展,CSS的用法也日益丰富和高级,本文将深... 前端高级css用法在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

在React中引入Tailwind CSS的完整指南

《在React中引入TailwindCSS的完整指南》在现代前端开发中,使用UI库可以显著提高开发效率,TailwindCSS是一个功能类优先的CSS框架,本文将详细介绍如何在Reac... 目录前言一、Tailwind css 简介二、创建 React 项目使用 Create React App 创建项目

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

一文教你Python引入其他文件夹下的.py文件

《一文教你Python引入其他文件夹下的.py文件》这篇文章主要为大家详细介绍了如何在Python中引入其他文件夹里的.py文件,并探讨几种常见的实现方式,有需要的小伙伴可以根据需求进行选择... 目录1. 使用sys.path动态添加路径2. 使用相对导入(适用于包结构)3. 使用pythonPATH环境

Vue中组件之间传值的六种方式(完整版)

《Vue中组件之间传值的六种方式(完整版)》组件是vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用,针对不同的使用场景,如何选择行之有效的通信方式... 目录前言方法一、props/$emit1.父组件向子组件传值2.子组件向父组件传值(通过事件形式)方

css中的 vertical-align与line-height作用详解

《css中的vertical-align与line-height作用详解》:本文主要介绍了CSS中的`vertical-align`和`line-height`属性,包括它们的作用、适用元素、属性值、常见使用场景、常见问题及解决方案,详细内容请阅读本文,希望能对你有所帮助... 目录vertical-ali