gpt4 book ai didi

Python基于React-Dropzone实现上传组件的示例代码

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 33 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Python基于React-Dropzone实现上传组件的示例代码由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

这次我要讲述的是在React-Flask框架上开发上传组件的技巧。我目前主要以React开发前端,在这个过程中认识到了许多有趣的前端UI框架——React-Bootstrap、Ant Design、Material UI、Bulma等。而比较流行的上传组件也不少,而目前用户比较多的是jQuery-File-Upload和Dropzone,而成长速度快的新晋有Uppy和filepond。比较惋惜的是Fine-Uploader的作者自2018年后就决定不再维护了,原因作为后来者的我就不多过问了,但请各位尊重每一位开源作者的劳动成果.

这里我选择React-Dropzone,原因如下:

  • 基于React开发,契合度高
  • 网上推荐度高,连Material UI都用他开发上传组件
  • 主要以 Drag 和 Drop 为主,但是对于传输逻辑可以由开发者自行设计。例如尝试用socket-io来传输file chunks。对于node全栈估计可行,但是我这里使用的是Flask,需要将Blob转ArrayBuffer。但是如何将其在Python中读写,我就没进行下去了。

实例演示

1. axios上传普通文件:

通过yarn将react-dropzone和引入:

?
1
yarn add react-dropzone axios

前端js如下(如有缺失,请自行修改):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
import React, {
     useState,
     useCallback,
     useEffect,
} from 'react' ;
import {useDropzone} from 'react-dropzone' ;
import "./dropzone.styles.css"
import InfiniteScroll from 'react-infinite-scroller' ;
import {
     List,
     message,
     // Avatar,
     Spin,
} from 'antd' ;
import axios from 'axios' ;
 
/**
* 计算文件大小
* @param {*} bytes
* @param {*} decimals
* @returns
*/
function formatBytes(bytes, decimals = 2) {
     if (bytes === 0) return '0 Bytes' ;
 
     const k = 1024;
     const dm = decimals < 0 ? 0 : decimals;
     const sizes = [ 'Bytes' , 'KB' , 'MB' , 'GB' , 'TB' , 'PB' , 'EB' , 'ZB' , 'YB' ];
 
     const i = Math.floor(Math.log(bytes) / Math.log(k));
 
     return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
}
 
/**
* Dropzone 上传文件
* @param {*} props
* @returns
*/
function DropzoneUpload(props) {
     const [files, setFiles] = useState([])
     const [loading, setLoading] = useState( false );
     const [hasMore, setHasMore] = useState( true );
 
     const onDrop = useCallback(acceptedFiles => {
         setLoading( true );
         const formData = new FormData();
         smallFiles.forEach(file => {
             formData.append( "files" , file);
         });
         axios({
             method: 'POST' ,
             url: '/api/files/multiplefiles' ,
             data: formData,
             headers: {
                 "Content-Type" : "multipart/form-data" ,
             }
         })
         then(resp => {
             addFiles(acceptedFiles);
             setLoading( false );
         });
     }, [files]);
 
     // Dropzone setting
     const { getRootProps, getInputProps } = useDropzone({
         multiple: true ,
         onDrop,
     });
 
     // 删除附件
     const removeFile = file => {
         const newFiles = [...files]
         newFiles.splice(newFiles.indexOf(file), 1)
         setFiles(newFiles)
     }
 
     useEffect(() => {
         // init uploader files
         setFiles([])
     },[])
 
     return (
         <section className= "container" >
         <div {...getRootProps({className: 'dropzone' })}>
             <input {...getInputProps()} />
             <p>拖动文件或点击选择文件
  • Python
  • React
  • dropzone
  • 上传组件
  • 延伸 · 阅读

    • 2021-12-20python imread函数详解
    • 2021-12-20Python无参装饰器的实现方案及优化
    • 2021-12-20python列表的特点分析
    • 2021-12-20python Selenium等待元素出现的具体方法
    • 2021-12-20Python数据标准化的实例分析
    • 2021-12-20Python特征降维知识点总结
    精彩推荐
    • PythonPython(TensorFlow框架)实现手写数字识别系统的方法

      Python(TensorFlow框架)实现手写数字识别系统的方法

      这篇文章主要介绍了Python(TensorFlow框架)实现手写数字识别系统的方法。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧... 。

      louishao 419 2021-02-26
    • Python使用python实现学生信息管理系统

      使用python实现学生信息管理系统

      这篇文章主要为大家详细介绍了使用python实现学生信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下... 。

      缘 源 园 568 2021-09-09
    • PythonPython实现TCP协议下的端口映射功能的脚本程序示例

      Python实现TCP协议下的端口映射功能的脚本程序示例

      端口映射一个最基本的运作形态就是通过一个中间端口将一个端口发送的数据全部转给另一个端口,well,这里我们就来看一下Python实现TCP协议下的端口映射功... 。

      hutaow 475 2020-08-27
    • Python简单实现python进度条脚本

      简单实现python进度条脚本

      这篇文章主要教大家如何简单实现python进度条,具有一定的参考价值,感兴趣的小伙伴们可以参考一下... 。

      I-Awakening 607 2020-12-26
    • PythonPython 摘得TIOBE 2020年度编程语言

      Python 摘得TIOBE 2020年度编程语言

      TIOBE 最新发布了 1 月编程语言排行榜,揭晓了 2020 年度比较受欢迎的编程语言,其中,Python 以 2.01% 的正增长荣获 2020 年度 TIOBE 编程语言奖!... 。

      今日头条 863 2021-01-07
    • Pythonpython opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)

      python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现

      这篇文章主要介绍了python 基于opencv对图像进行各种处理,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下... 。

      我坚信阳光灿烂 806 2021-08-12
    • Pythonpython 删除excel表格重复行,数据预处理操作

      python 删除excel表格重复行,数据预处理操作

      这篇文章主要介绍了python 删除excel表格重复行,数据预处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧... 。

      HelenLee01 1295 2020-07-07
    • Pythonpython requests库的使用

      python requests库的使用

      这篇文章主要介绍了python requests库的使用,帮助大家更好的利用python进行爬虫,感兴趣的朋友可以了解下... 。

      ゛竹先森゜ 1015 2021-08-22

    最后此篇关于Python基于React-Dropzone实现上传组件的示例代码的文章就讲到这里了,如果你想了解更多关于Python基于React-Dropzone实现上传组件的示例代码的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com