ant design pro上传图片到后端

2023-10-27

我们这里是前端将图片上传到后端,然后后端这里再上传到阿里云的OSS,并返回一个文件的路径给前端

先看效果

image.png上传后生成的图片image.png

前端:

// pageList.js
const props = {
    name: "avatar",
    listType: "picture-card",
    className: "avatar-uploader",
    showUploadList: false,
    // 设置只上传一张图片,根据实际情况修改
    customRequest: info => {
      // 手动上传
      const formData = new FormData();
      formData.append('file', info.file);
      uploadLogoImg(formData);
    },
    onRemove: file => {
      // 删除图片调用
      this.setState(state => {
        const index = state.fileList.indexOf(file);
        const newFileList = state.fileList.slice();
        newFileList.splice(index, 1);
        return {
          fileList: newFileList,
        };
      });
    },

    beforeUpload: file => {
      // 控制上传图片格式
      const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';

      if (!isJpgOrPng) {
        message.error('您只能上传JPG/PNG 文件!');
        return;
      }
      const isLt2M = file.size / 1024 / 1024 < 2;
      if (!isLt2M) {
        message.error('图片大小必须小于2MB!');
        return;
      }
    },
  }

...

<Upload
	{...props}
>
  {logoUrl ? <img src={logoUrl} alt="avatar" style={{ width: '100%' }} /> : uploadButton}
</Upload>

// model.js
// 上传图片logo
*uploadLogoImg({ payload }, { call, put }) {
  const response = yield call(uploadLogoImg, payload);
  yield put({
    type: 'handleUploadLogoImg',
    payload: {
      response
    },
  });
},

// api.js
export async function uploadLogoImg(params) {
  // console.log('cityApi.pageList 发送的参数');
  // console.log(JSON.stringify(params));
  return request(`${path}/uploadImage`, {
    method: 'POST',
    body: params,
  });
}

后端:

/**
 * 图片上传
 */
@PostMapping(value = "uploadImage")
public Response<String> uploadImage(LogoPicReq logoPicReq) {
  return success(appservice.uploadLogo(logoPicReq.getFile()));
}

注意:

这里的 LogoPicReq 没有@RequestBody,因为这里是通过表单提交的

@Data
public class LogoPicReq {

    private MultipartFile file;
}

OSS的代码

			if (appFile == null) {
            throw new BusinessException("数据为空");
        }
        String endpoint = ossProperties.getEndpoint();
        String accessKeyId = ossProperties.getAccessKeyId();
        String accessKeySecret = ossProperties.getAccessKeySecret();
        String bucketName = ossProperties.getBucketName();

        InputStream fileContent;
        try {
            fileContent = appFile.getInputStream();
            //获取图片名称
            String filename = appFile.getOriginalFilename();
            if (null == filename || "".equals(filename)) {
                throw new BusinessException("文件为空");
            }

            //获取图片扩展名
            String ext = filename.substring(filename.lastIndexOf(".") + 1);
            //生成图片的存放在服务器的路径
            String picName = "img/walle/" + UUID.randomUUID().toString() + "." + ext;

            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            ossClient.putObject(bucketName, picName, fileContent);
            ossClient.shutdown();

            //获取OSS生成的url
            Date date = new Date();
            date.setTime(date.getTime() + 100L * 365 * 24 * 3600 * 1000);
            GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, picName, HttpMethod.GET);
            request.setExpiration(date);
            URL signedUrl = ossClient.generatePresignedUrl(request);
            log.info("[生成OSS直链]对象名:{},直链地址:{}", picName, signedUrl.toString());
            return signedUrl.toString();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;

其中一定要通过直联的方式进行获取,否则就是上报没有权限

参考:

https://blog.csdn.net/qq_38209894/article/details/99729502

参考2

https://qdhaiqiang.github.io/2019/03/14/Ant%20Design%20Pro%E5%AD%A6%E4%B9%A0%E4%B9%8B%E4%BD%BF%E7%94%A8upload%E7%BB%84%E4%BB%B6%E5%B9%B6%E7%94%A8form%E8%A1%A8%E5%8D%95%E6%8F%90%E4%BA%A4/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ant design pro上传图片到后端 的相关文章

  • 如何获取对象的所有属性?

    如何在 JavaScript 中使用反射获取对象的所有属性 循环遍历对象并获取属于该对象且不属于该对象的每个键 一个函数 var properties for var key in obj if obj hasOwnProperty key
  • javascript 中对象的“异步”循环

    通常 我们可以对数组和对象进行循环来迭代属性 值 但循环是阻塞的 但是 超时可用于模拟异步循环 我设法为数组做到了这一点 http jsfiddle net LHhy2 do stuff function asyncLoop i do st
  • pubnub 和 head.js

    有没有人成功整合过pubnub http www pubnub com 和 head js 正确吗 Pubnub http www pubnub com 希望我将他们的脚本放在页面底部并带有 div 就在它前面的标签 这可以确保在最后调用
  • Jasmine-jQuery loadFixtures 未定义

    我对整个茉莉花的事情仍然很陌生 在过去的几个小时里我陷入了这个问题 我尝试使用 loadFixture 加载外部夹具文件 我使用 Jasmine 2 0 0 和 Jasmine jQuery 2 0 5 ReferenceError loa
  • 在 Javascript 中获取第一个数字出现后的子字符串

    我正在尝试提取第一个数字之后 并包括 的字符 ABC 123SD gt 123SD 123 gt 123 123SD gt 123SD ABC gt 我当前的解决方案如下 var string1 ABC 123SD var firstDig
  • ajaxStop() 不触发

    这是不起作用的代码 document ajaxStop function this unbind ajaxStop prevent running again when other calls finish Display everythi
  • Javascript - 在加载所有图像后执行

    看了别人的问题我想 window onload 会回答我的问题 我已经尝试过这个 但它会在页面加载时立即执行代码 而不是在图像加载之后 如果有什么区别的话 图像来自 CDN 并且不是相对的 有人知道解决办法吗 我没有使用 jQuery 想要
  • Chrome 扩展同步调用 - 仅在窗口关闭后创建窗口

    我有这个代码 function voteNewWindow mailNum chrome windows create url http www google com incognito true function window conso
  • 搜索深度嵌套数组以更新对象

    我有一个深层嵌套的数据结构 我有兴趣匹配数组 和数组数组 中的某个值 然后将一些数据推送到随附的数组中 例如以下是我的数组colors并伴随着的是更多颜色数组可能存在也可能不存在 var myData color green moreCol
  • 使用 JavaScript 生成 PDF 文件

    我正在尝试将 XML 数据从网页转换为 PDF 文件 并且希望能够完全在 JavaScript 中完成此操作 我需要能够绘制文本 图像和简单的形状 我希望能够完全在浏览器中完成此操作 我刚刚写了一个名为jsPDF https github
  • 有没有办法将变量从 javascript 导入到 sass 或反之亦然?

    我正在制作一个依赖于块概念的 CSS 网格系统 所以我有一个基本文件 例如 max columns 4 block width 220px block height 150px block margin 10px 它被 mixin 使用 m
  • 如何从 JSON 响应重定向?

    所以我尝试使用 Flask 和 Javascript 上传器 Dropzone 上传文件并在上传完成后重定向 文件上传正常 但在烧瓶中使用传统的重定向 return redirect http somesite com 不执行任何操作 页面
  • 在 jQuery 可排序中对多个选定项目进行排序?

    我试图在 jQuery 可排序集中选择多个项目 然后将选定的项目一起移动 这是我的弱点开始尝试使其发挥作用 http jsfiddle net benstenson CgD8Y 这是代码 HTML div class container d
  • 如何使用 vanilla JS 实现可维护的反应式 UI

    今天我遇到了一个问题 可以通过使用像 Vue 这样的反应式和状态管理框架来轻松解决 遗憾的是 无法使用它 以下 简化 情况 链接到代码笔 https codepen io theiaz pen BazErKV 我们有一个服务器渲染的页面 其
  • 禁用特定 div 上的 Tab 键

    我有以下结构 div div Some content div div Some content div div 我想 禁用 div2 上的 tab 键 我的意思是按下 tab 键时 div2 的元素不会获得焦点 有没有简单的方法可以使用
  • mozilla pdf.js 没有全视图

    我喜欢这个 pdf 查看器https github com mozilla pdf js https github com mozilla pdf js Demo http mozilla github com pdf js web vie
  • JavaScript:测试与执行

    我想知道检查字符串 例如邮件 密码等 的最佳方法是什么 i exec a vs i test a exec返回值 test true test 1 way var mail req body mail if check mail exec
  • Node npm 包抛出使用严格:全局发布和安装后未找到命令

    我正在尝试发布 npm 包 当我全局安装该包并尝试运行 cli 命令时 我收到此错误 nvm versions node v0 12 2 bin myPack line 1 use strict command not found nvm
  • 如何使用 jQuery 或 JavaScript 聚焦 或 标签?

    for var i 0 i
  • Internet Explorer 9 是否会因数组和对象文字末尾的额外逗号而卡住?

    现代浏览器和 Node js 等环境允许您说 a 1 b 2 或 1 2 3 这在历史上一直是 Internet Explorer 的问题 Internet Explorer 9 中修复了此问题吗 对此有两种不同的答案 一种是对象初始值设定

随机推荐

  • 【论文解读-未完成】-A Survey of Transformers-【一篇论文了解整个Transformers王国】

    论文链接 https arxiv org abs 2106 04554 论文时间 202106 论文单位 复旦大学 论文长度 40页 论文目录 A Survey of Transformers Transformers的文献综述 1 INT
  • 自动化测试框架总结

    自动化测试框架流程图 自动化测试框架模块 配置文件读取模块 日志模块 测试数据读取模块 测试执行模块 测试结果更新模块 异常处理模块 屏幕截图模块 自动化框架模块功能说明 配置文件读取模块 模块的主要功能是把测试项目的公共配置读取到脚本里
  • 智能家居_串口通信编程

    模拟串口 我要使用串口开发 那么 安卓系统必须要Root 让我有超级权限 串口就是文件 首先要打开串口文件 我们没有实体开发主板 使用虚拟串口驱动来代替实体开发主板 模拟android主板上的2个串口 模拟 开发板 插入了电脑 电脑就会显示
  • 2020东南大学网络空间安全保研夏令营(预推免)经验

    2020东南大学网安院保研夏令营 预推免 经验 前言 个人情况 本科某双非双一流CS专业 GPA 1 230 国家级省级奖项各有四五项 校级奖项若干 奖学金若干 项目只有一个大创 无论文 东大网安院说来话长 本来是不想报的 然鹅计算机学院的
  • mavne install 报错org.apache.maven.surefire.util.SurefireReflectionException: java.lang.reflect.Invoca...

    maven install 报错 org apache maven surefire util SurefireReflectionException java lang reflect InvocationTargetException
  • java校验文件路径正则表达式_正则表达式判断是否是合法路径

    在页面前端使用一个文本框 输入条件是 c test 在java中File判断是可以通过的 可以创建的 File file new File filePath if file exists file mkdir 说明是一个合法的路径 但是在w
  • 哈师大计算机学院宿舍,新生攻略

    原标题 新生攻略 哈师大所有的 秘密 都在这了 你好 我是哈师大17级的新生 我想全面的了解一下咱们学校 应该去哪了解呀 这你可算是问对人了 听说最近哈尔滨师范大学学生会的官方微信平台出了非常全的新生攻略呢 快关注它们的公众号 hsdxsh
  • Linux系列

    测试代码如下 是一个输出 Tinywan字符串与循环轮数的死循环程序 每输出一行就休眠1秒 原始输出 前台执行该程序运行效果 程序每隔一秒会在终端输出一个字符串 此时如果键入 Ctrl C 程序会收到一个 SIGINT信号 如果不做特殊处理
  • APT 攻击溯源方法

    概述 当今世界正值百年未有之大变局 网络空间成为继陆 海 空 天之后的第五大疆域 安全威胁也随之延伸至网络空间 没有网络安全就没有国家安全 在新时代网络空间安全已经上升至国家安全的高度 高级持续性威胁 Advanced Persistent
  • #PCIE# PCIE基础知识篇(3)

    写在前面 本文章转载自老狼知乎 感谢分享 随着AMD新一代CPU的发布 PCIe 4 0 Gen4 也进入了人们的视线 然而Intel随后宣传PCIe 4 0对消费市场用处不大 AMD则反讽Intel吃不到葡萄说葡萄酸 正在吃瓜群众搬板凳看
  • could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the n

    如果你在创建自定义网络时 docker network create driver bridge my net出现下面的提示 Error response from daemon could not find an available no
  • 【Vue3项目】登录注册--双Token机制

    目录 前言 什么是双Token机制 双Token的实现流程 前言 最近同项目的伙伴告诉我们一个 新词汇 双Token登录机制 emmmmm 确实没了解过 据说是在实现token长期有效的同时 防止token被第三方盗用 提高用户信息的安全性
  • ReactNative系列之十三WebStorm的JSX语法配置及自动补全设置

    1 开发ReactNative常用工具 WebStorm Sublime Atom 2 配置WebStorm的ReactNative语法 a 下载 git clone https github com virtoolswebplayer R
  • ES 搜索20 (function_score 和 field_value_factor 自定义评分)

    自定义评分 设想有个网站供用户发布博客并且可以让他们为自己喜欢的博客点赞 我们希望将更受欢迎的博客放在搜索结果列表中相对较上的位置 同时全文搜索的评分仍然作为相关度的主要排序依据 可以简单的通过存储每个博客的点赞数来实现它 在搜索时 可以将
  • DHCP协议及其实验(eNSP)

    目录 一 DHCP 1 1 DHCP作用 1 2 DHCP地址池 1 3 DHCP报文类型 1 4 DHCP工作原理 对DHCP工作原理的思考 1 5 DHCP租期更新 1 6 DHCP重绑定 1 7 IP地址释放 二 DHCP实验 2 1
  • C++控制台RPG游戏:对话系统

    具体实现思路 CTalk类继承窗口基类 里面封装了updata 和onRander 方法 里面包含了结构体SArrTalk m pArrTalk 用来存对话数据 CTalk类控制对话的进行 以及数据的渲染 而对话的内容则存在相应的文件之中
  • 使用OpenCV,Haar级联检测器进行面部、眼睛、嘴部检测

    使用OpenCV Haar级联检测器进行面部 眼睛 嘴部检测 1 效果图 2 原理 2 1 Haar级联是什么 2 2 Haar级联的问题与局限性 2 3 Haar级联预训练的模型 3 源码 3 1 图像检测 3 2 实时视频流检测 参考
  • 【进阶】使用Excel进行回归分析,预测真实值

    预备阅读 进阶 使用Excel进行相关分析 前言 昨天学习了Excel中的相关分析 在数据分析中 相关分析和回归分析关系紧密 今天来学习下Excel中的回归分析 回归分析 回归分析 regressionanalysis 是确定两种或两种以上
  • 向量大小和归一化(vector magnitude & normalization)、向量范数(vector norm)、标量/向量/矩阵/张量

    一 向量大小 首先一个向量的长度或者大小一般记为 上图中的平面向量的大小计算如下 空间向量的大小计算如下 维复向量的大小计算如下 二 向量归一化 向量归一化即将向量的方向保持不变 大小归一化到1 向量的归一化向量为 三 向量范数 范数是一种
  • ant design pro上传图片到后端

    我们这里是前端将图片上传到后端 然后后端这里再上传到阿里云的OSS 并返回一个文件的路径给前端 先看效果 上传后生成的图片 前端 pageList js const props name avatar listType picture ca