Antd和React使用Upload上传组件自定义上传文件(图片为例)

1.定义结构

             <Uploadaccept="image/*"listType="picture-card"fileList={fileList}onChange={onChange}onPreview={onPreview}customRequest={handlePreview}>{fileList.length < 1 && "+ 上传封面"}</Upload>

2.内容

import type { GetProp, UploadFile, UploadProps } from "antd";const [fileList, setFileList] = useState<UploadFile[]>([]);const onChange: UploadProps["onChange"] = ({ fileList: newFileList }) => {setFileList(newFileList);};const onPreview = async (file: UploadFile) => {let src = file.url as string;if (!src) {src = await new Promise((resolve) => {const reader = new FileReader();reader.readAsDataURL(file.originFileObj as FileType);reader.onload = () => resolve(reader.result as string);});}const image = new Image();image.src = src;const imgWindow = window.open(src);imgWindow?.document.write(image.outerHTML);};const handlePreview = async (file: any) => {const form = new FormData();form.append("file", file.file);const res: any = await UploadApi(form);console.log("上传结果", res);if (res.status === 0) {const FileList = [{uid: "1",name: res.name,url: res.url,},];setFileList(FileList);}return false;};

3.nodejs接收(app.js配置)

const multer = require("multer");
let objMulter = multer({ dest: "./public/upload" });
//实例化multer,传递的参数对象,dest表示上传文件的存储路径
app.use(objMulter.any()); //any表示任意类型的文件
// app.use(objMulter.image())//仅允许上传图片类型
app.use(express.static("./public"));

4.定义接口

const fs = require("fs");
async function UploadFile(req, res) {console.log("上传内容", req.files);const name = Buffer.from(req.files[0].originalname, "latin1").toString("utf8");//nodejs对于中文产生乱码的解决办法let oldName = req.files[0].path; //获取名字//给新名字加上原来的后缀let newName = req.files[0].path + name;fs.renameSync(oldName, newName); //改图片的名字res.send({status: 0,name: name,url: "http://localhost:6789/upload/" + req.files[0].filename + name, //该图片的预览路径});
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/741542.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Samtec前沿 | 信号发生器 - 决定可靠性的重要因素之一

【摘要/前言】 作为消费者&#xff0c;我们已经开始期待我们的技术达到一个前所未有的可靠性水平。无论是智能手机还是家庭汽车&#xff0c;我们已经开始期待智能电子设备在每次使用时都能在第一时间发挥作用。 【信号和电源发生器至关重要】 现代设备能够提供如此出色的…

外包干了5天,技术明显退步。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入南京某软件公司&#xff0c;干了接近2年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了2年的功能测试&…

VXLAN学习笔记

声明&#xff1a;该博客内容大部分参考参考链接整理 什么是VXLAN&#xff1f; VXLAN(Virtual Extensible LAN)即虚拟扩展局域网&#xff0c;是大二层网络中广泛使用的网络虚拟化技术。在源网络设备与目的网络设备之间建立一条逻辑VXLAN隧道&#xff0c;采用MAC in UDP的封装方…

Vue+SpringBoot打造大学生相亲网站

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询会员4.2 查询相亲大会4.3 新增留言4.4 查询新闻4.5 新增新闻 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的大学生相亲网站&#xff0c;包含了会员管理模块、新闻管…

嵌入式系统中端口号的理解与分析

每当看到有人的简历上写着熟悉 tcp/ip, http 等协议时, 我就忍不住问问他们: 你给我说说, 端口是啥吧! 可惜, 很少有人能说得让人满意... 所以这次就来谈谈端口(port), 这个熟悉的陌生人. 在此过程中, 还会谈谈间接层, naming service 等概念, IoC, 依赖倒置等原则以及 TCP 协议…

*地宫取宝c++

题目 输入样例1&#xff1a; 2 2 2 1 2 2 1输出样例1&#xff1a; 2输入样例2&#xff1a; 2 3 2 1 2 3 2 1 5输出样例2&#xff1a; 14 思路 题目说从入口开始&#xff0c;只能向右或向下行走到达右下角&#xff0c;类似“摘花生”这道题的模型。题目又说只有当格子里的宝…

数字化浪潮下的选择:ETU-LINK光模块写码板全新升级至400G

随着光模块市场的蓬勃发展&#xff0c;ETU研发团队致力于不断改进SFP编码工具&#xff0c;以满足日益增长的客户需求。经过不懈努力&#xff0c;我们成功推出了3.0版本的写码板&#xff0c;在硬件和软件方面都进行了全面升级&#xff0c;为用户带来了极大的便利。今天&#xff…

华为鸿蒙系统接入实人认证 蚂蚁蚁盾提供技术支持

随着华为千帆计划持续推进&#xff0c;鸿蒙生态日渐完善。近日&#xff0c;华为自研的鸿蒙操作系统与蚂蚁数科、阿里云合作开发的实人认证产品完成适配。这意味着基于鸿蒙系统开发的 App 可以 0 门槛接入该实人认证产品&#xff0c;鸿蒙用户可以无感享受到和安卓、IOS 系统一样…

一文弄懂空间金字塔池化网络

目录 空间金字塔池化网络是什么&#xff1f; 组成部分和工作原理 具体步骤 ​编辑 主要优点 空间金字塔池化网络是什么&#xff1f; 空间金字塔池化网络&#xff08;Spatial Pyramid Pooling Network&#xff0c;SPPNet&#xff09;是一种用于处理具有不同尺寸和比例的输入…

前端网络相关面试题

1. GET和POST请求的区别 传递参数不同&#xff1a; POST传递的参数在request body中GET传递的参数在url后拼接 GET请求一般用于查询&#xff0c;POST一般用于提交某种信息进行某些修改操作 POST相对GET请求安全 GET请求会被浏览器主动缓存&#xff0c;POST不会&#xff0c;要…

蓝牙耳机哪个好?2024年蓝牙耳机推荐榜单,新手上路!

​面对市场上种类繁多的蓝牙耳机&#xff0c;许多用户感到困惑不解。作为一个耳机爱好者&#xff0c;我根据自己的使用经验&#xff0c;整理了一些我认为值得推荐的蓝牙耳机&#xff0c;希望能为大家在选购时提供一些参考。 一、蓝牙耳机选购指南 1. 佩戴舒适度排名——开放式…

单元测试,写起来到底有多痛?

到底什么是单元测试 这个问题看似非常简单&#xff0c;单元测试嘛&#xff0c;不就是咱们开发自己写些测试类&#xff0c;来测试自己写的代码逻辑对不对。 这句话没有问题&#xff0c;但是不够准确。 首先我们要明白&#xff0c;这个测试二字前面还有两个字&#xff1a; 单元 。…

Windows-WSL2-VSCode+Docker配置C++开发环境

Windows-WSL2-VSCodeDocker配置C开发环境 写在前面 因为在学习工作中&#xff0c;需要不同的编码环境&#xff0c;若将这些不同的开发环境都状态一台设备上&#xff0c;很容易出问题&#xff0c;而且迁移性差&#xff0c;于是计划把不同的开发环境用docker隔离开来&#xff0…

git clone拉取项目报错Filename too long warning:Clone succeeded,but checkout failed

这个坑可太坑了~ 首先原因是&#xff1a;拉取项目中有文件名过大&#xff0c;导致拉取项目中断&#xff0c;文件拉取不完全的情况。 1、报错信息如下&#xff1a; try/*****: Filename too long2、解决方法&#xff0c;找到你要存放代码的文件夹&#xff0c;打开git命令执行…

面向对象编程第一式:封装 (Java篇)

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…

PMP考试心得,与大家共勉

本人刚刚通过PMP考试&#xff0c;有一些自己的经历&#xff0c;写出来欢迎已经是PMP的兄弟们指正&#xff0c;希望能给正在PMP之路上奔跑的人们一些帮助。 其实很早就听说过PMP认证考试了&#xff0c;但是一直工作很忙没有时间来投入学习考试。因此一直拖到今年夏天才有时间参加…

耐腐蚀PFA气体洗涤瓶可多级串联透明特氟龙塑料氢气吸收装置

洗气瓶是一种常用于净化和干燥各种气体的实验室器皿&#xff0c;以去除其中的水分、油脂、颗粒物等杂质&#xff0c;从而使需要用到的气体满足实验要求。 PFA洗气瓶的工作原理&#xff1a; 主要是通过液体吸收、溶解或发生化学反应来去除气体中的杂质。在洗气过程中&#xff…

Java技术栈 —— Stream流式编程

首先&#xff0c;这里的Stream编程和I/O的Stream流是不一样的&#xff0c;一开始我挺不习惯这种编程范式的&#xff0c;但到了后面&#xff0c;发现这样写可以在一行代码中做很多事情&#xff0c;于是也接受了。 参考文章或视频链接[1] A Guide to Java Streams in Java 8: In…

鸿蒙 线程模型

前提&#xff1a;基于官网3.1/4.0文档。参考官网文档 基于Android开发体系来进行比较和思考。&#xff08;或有偏颇&#xff0c;自行斟酌&#xff09; 一、概念 HarmonyOS应用中每个进程都会有一个主线程&#xff0c;主线程有如下职责&#xff1a; 执行UI绘制&#xff1b; 管理…

加速布局Wi-Fi及蓝牙市场!移远通信再推四款高性能模组新品

3月12日&#xff0c;全球领先的物联网整体解决方案供应商移远通信宣布&#xff0c;其已正式推出四款新型Wi-Fi和蓝牙模组新品&#xff0c;旨在继续致力于满足物联网行业不断升级的应用需求&#xff0c;为智慧家居、工业互联、储能、充电桩等各种场景提供一站式创新解决方案。 此…