antd pro mysql_antd pro table中的文件上传

本文介绍了如何在antd pro的表格组件中实现图片上传和展示。通过示例代码展示了如何在表格中创建一个列来显示图片,并提供了一个表单页面用于上传和编辑图片。关键在于使用antd的Upload组件,结合自定义的上传处理函数,实现了与后端API的交互。此外,文章还展示了表格中的图片预览功能。
摘要由CSDN通过智能技术生成

概述

项目中经常会遇到在表格中展示图片的需求(比如展示用户信息时, 有一列是用户的头像).

antd pro table 的功能很强大, 对于常规的信息展示只需参照示例配置 column 就可以了. 但是对于文件(比如图片) 在表格中的展示, 介绍并不多.

下面通过示例来演示 antd pro table 中图片的上传和展示.

示例代码

前端主要包含如下 2 部分:

列表页面: 通过 antd pro table 显示数据信息

表单页面: 新建/修改数据的页面, 上传图片的功能就在其中

一个模块主要包含如下几个文件:

teacher.jsx: 显示数据列表信息

teacher-form.jsx: 用于添加/修改数据

model.js: list.jsx 和 form.jsx 之间共享数据

service.js: 访问后端的 API

下面的例子是实际项目中的一个简单的模块, 完成教师信息的 CURD, 教师的头像是图片文件

列表页面

1 import React, { useState, useRef } from 'react';

2 import { connect } from 'umi';

3 import { PageHeaderWrapper } from '@ant-design/pro-layout';

4 import { Button, Card, Modal, Space, Popconfirm, Form, message } from 'antd';

5 import { PlusOutlined, DeleteOutlined, EditOutlined } from '@ant-design/icons';

6 import ProTable from '@ant-design/pro-table';

7 import { queryAllTeacher, addTeacher, updateTeacher, deleteTeacher } from './service';

8 import { getDictDataByCatagory, getDownloadUrl } from '@/utils/common';

9 import TeacherForm from './teacher-form';

10

11 const Teacher = (props) => {

12 const { dicts, form, avatarFid } = props;

13 const [createModalVisible, handleModalVisible] = useState(false);

14

15 // preview state

16 const [previewVisible, handlePreviewVisible] = useState(false);

17 const [previewImageUrl, handlePreviewImageUrl] = useState('');

18

19 const [record, handleRecord] = useState(null);

20 const tableRef = useRef();

21

22 const previewAvatar = (record) => {

23 handlePreviewVisible(true);

24 if (record.avatar) handlePreviewImageUrl(getDownloadUrl(record.avatar));

25 else handlePreviewImageUrl('/nopic.jpg');

26 };

27

28 const teacherColumns = [

29 {

30 title: '头像图片',

31 dataIndex: 'avatar',

32 hideInSearch: true,

33 render: (_, record) => (

34 previewAvatar(record)}>

35 {record.avatar ? (

36 %7BgetDownloadUrl(record.avatar)%7D

37 ) : (

38 nopic.jpg'%7D

39 )}

40

41 ),

42 },

43 {

44 title: '姓名',

45 dataIndex: 'login_name',

46 },

47 {

48 title: '性别',

49 dataIndex: 'sex',

50 hideInSearch: true,

51 },

52 {

53 title: '手机号',

54 dataIndex: 'mobile',

55 },

56 {

57 title: '身份证号码',

58 dataIndex: 'identity_card',

59 hideInSearch: true,

60 },

61 {

62 title: '个人简介',

63 dataIndex: 'comment',

64 ellipsis: true,

65 width: 300,

66 hideInSearch: true,

67 },

68 {

69 title: '来源类型',

70 dataIndex: 'teacher_source',

71 hideInSearch: true,

72 valueEnum: getDictDataByCatagory(dicts, 'teacher_source'),

73 },

74 {

75 title: '操作',

76 dataIndex: 'option',

77 valueType: 'option',

78 render: (_, record) => (

79

80

81 type="primary"

82 size="small"

83 onClick={() => {

84 handleRecord(record);

85 // 设置avatar数据

86 let avatarUrl = '/nopic.jpg';

87

88 if (record.avatar) avatarUrl =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值