利用Gradio的UploadButton模块实现文件上传功能

news2024/10/7 8:23:52

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️

👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈

博主原文链接:https://www.yourmetaverse.cn/nlp/442/

请添加图片描述

(封面图由文心一格生成)

利用Gradio的UploadButton模块实现文件上传功能

本文介绍了Gradio库中的UploadButton模块及其click和upload方法。UploadButton模块可以用于创建一个文件上传按钮,用户可以通过点击按钮来上传文件。本文将详细介绍UploadButton模块的参数和行为,并给出了示例代码和方法的详细说明。

在现代Web应用程序中,文件上传是一个常见的功能需求。Gradio库是一个用于构建交互式界面的Python库,其中的UploadButton模块提供了一个简单而强大的文件上传功能。通过使用UploadButton模块,开发者可以轻松地在Gradio应用程序中添加文件上传功能。

1. UploadButton模块介绍

UploadButton模块是Gradio库中的一个组件,用于创建一个文件上传按钮。用户可以通过点击按钮来选择并上传文件。下面是UploadButton模块的一些重要参数和行为:

  • 参数:

    • label:按钮上显示的文本,默认为"Upload a File"。
    • value:默认要上传的文件或文件列表。
    • variant:按钮的样式,可以是’primary’、‘secondary’或’stop’。
    • visible:指定组件是否可见,默认为True。
    • size:按钮的大小,可以是’sm’或’lg’。
    • scale:相对于相邻组件的宽度比例。
    • min_width:最小像素宽度,如果屏幕空间不足以满足此值,则会换行。
    • interactive:指定按钮是否可交互,默认为True。
    • elem_id:组件在HTML DOM中的id。
    • elem_classes:组件在HTML DOM中的类。
  • 行为:

    • 输入:将上传的文件作为文件对象或文件对象列表传递给后续处理函数。
    • 输出:期望函数返回文件的路径字符串或路径字符串列表。

2. click方法

click方法是UploadButton模块的一个监听器方法,当点击按钮时触发该方法。click方法可以在Gradio Blocks中使用,用于将函数包装成一个接口。

  • 参数:
    • fn:要包装的函数,通常是一个机器学习模型的预测函数。
    • inputs:作为输入的组件列表。
    • outputs:作为输出的组件列表。
    • api_name:在API文档中显示的端点名称。
    • status_tracker:状态跟踪器对象。
    • scroll_to_output:是否在完成后滚动到输出组件。
    • show_progress:是否显示进度动画。
    • queue:是否将请求放入队列中。
    • batch:是否处理一批输入。
    • max_batch_size:批处理的最大输入数量。
    • preprocess:是否在运行函数之前运行组件数据的预处理。
    • postprocess:是否在返回函数输出之前运行组件数据的后处理。
    • cancels:需要取消的其他事件列表。
    • every:在客户端连接打开时每隔一定时间运行一次。

3. upload方法

upload方法是UploadButton模块的另一个监听器方法,当用户上传文件到组件时触发该方法。upload方法也可以在Gradio Blocks中使用。

  • 参数:
    • fn:要包装的函数,通常是一个机器学习模型的预测函数。
    • inputs:作为输入的组件列表。
    • outputs:作为输出的组件列表。
    • api_name:在API文档中显示的端点名称。
    • status_tracker:状态跟踪器对象。
    • scroll_to_output:是否在完成后滚动到输出组件。
    • show_progress:是否显示进度动画。
    • queue:是否将请求放入队列中。
    • batch:是否处理一批输入。
    • max_batch_size:批处理的最大输入数量。
    • preprocess:是否在运行函数之前运行组件数据的预处理。
    • postprocess:是否在返回函数输出之前运行组件数据的后处理。
    • cancels:需要取消的其他事件列表。
    • every:在客户端连接打开时每隔一定时间运行一次。

4. 示例代码和用法

下面是一个使用UploadButton模块的示例代码:

import gradio as gr

def upload_file(files):
    file_paths = [file.name for file in files]
    return file_paths

with gr.Blocks() as demo:
    file_output = gr.File()
    upload_button = gr.UploadButton("Click to Upload a File", file_types=["image", "video"], file_count="multiple")
    upload_button.upload(upload_file, upload_button, file_output)

demo.launch()

在这个示例中,我们创建了一个Gradio应用程序,包含一个文件输出组件(file_output)和一个UploadButton组件(upload_button)。当用户点击UploadButton组件并选择要上传的文件后,会触发upload_file函数来处理上传的文件。upload_file函数将返回上传文件的路径列表,并将其作为输出展示在文件输出组件中。

参数详解

UploadButton

参数数据类型默认值描述
labelstr“Upload a File”按钮上显示的文本
valuestr | list[str] | Callable | NoneNone默认要上传的文件或文件列表
variantLiteral[‘primary’, ‘secondary’, ‘stop’]“secondary”按钮样式:'primary’为主要样式,'secondary’为次要样式,'stop’为停止按钮样式
visibleboolTrue是否显示组件
sizeLiteral[‘sm’, ‘lg’] | NoneNone按钮的尺寸:可以是"sm"(小尺寸)或"lg"(大尺寸)
scaleint | NoneNone相对于相邻组件的宽度比例。例如,如果组件A的scale=2,组件B的scale=1,则组件A的宽度是组件B的两倍。必须是整数。
min_widthint | NoneNone最小像素宽度,如果屏幕空间不足以满足此值,将换行。如果某个scale值导致该组件比min_width更窄,则优先考虑min_width参数。
interactiveboolTrue如果为False,UploadButton将处于禁用状态。
elem_idstr | NoneNone可选字符串,作为该组件在HTML DOM中的id分配。可用于定位CSS样式。
elem_classeslist[str] | str | NoneNone可选的字符串列表,作为该组件在HTML DOM中的类分配。可用于定位CSS样式。
typeLiteral[‘file’, ‘bytes’]“file”组件返回的值的类型。"file"返回与上传文件具有相同基本名称的临时文件对象,其完整路径可以通过file_obj.name检索;"bytes"返回一个字节对象。
file_countLiteral[‘single’, ‘multiple’, ‘directory’]“single”如果是"single",允许用户上传一个文件;如果是"multiple",允许用户上传多个文件;如果是"directory",允许用户上传所选目录中的所有文件。返回类型将根据"multiple"或"directory"的情况而定,分别返回每个文件的列表。
file_typeslist[str] | NoneNone要上传的文件类型列表。"file"允许上传任何类型的文件;"image"只允许上传图像文件;"audio"只允许上传音频文件;"video"只允许上传视频文件;"text"只允许上传文本文件。

click方法

参数数据类型默认值描述
fnCallable | None必需要封装为接口的函数,通常是机器学习模型的预测函数。函数的每个参数对应一个输入组件,函数应返回单个值或元组,其中每个元素对应一个输出组件。
inputsComponent | list[Component] | set[Component] | NoneNone用作输入的组件列表。如果函数不需要输入,这应该是一个空列表。
outputsComponent | list[Component] | NoneNone用作输出的组件列表。如果函数不返回输出,这应该是一个空列表。
api_namestr | None | Literal[False]None定义端点在API文档中的显示方式。可以是字符串、None或False。如果为False,端点将不会在API文档中显示。如果设置为None,端点将以无名端点的形式显示在API文档中,尽管此行为将在Gradio 4.0中更改。如果设置为字符串,端点将以给定的名称显示在API文档中。
status_trackerNoneNone
scroll_to_outputboolFalse如果为True,在完成时将滚动到输出组件。
show_progressLiteral[‘full’, ‘minimal’, ‘hidden’]“full”如果为True,在等待期间显示进度动画。
queuebool | NoneNone如果为True,在队列中排队请求(如果启用了队列)。如果为False,即使启用了队列,也不会将此事件放入队列中。如果为None,则使用gradio应用程序的队列设置。
batchboolFalse如果为True,则函数应处理一批输入,这意味着它应接受每个参数的输入值列表。列表应具有相等的长度(最多为max_batch_size长度)。然后函数必须返回一个元组的列表(即使只有一个输出组件),其中元组中的每个列表对应一个输出组件。
max_batch_sizeint4如果从队列中调用,将一起批处理的最大输入数量(仅当batch=True时相关)
preprocessboolTrue如果为False,将不会在运行’fn’之前运行组件数据的预处理(例如,如果使用Image组件调用此方法,则保留为base64字符串)。
postprocessboolTrue如果为False,将不会在将’fn’的输出返回给浏览器之前运行组件数据的后处理。
cancelsdict[str, Any] | list[dict[str, Any]] | NoneNone当此侦听器被触发时,取消其他事件的列表。例如,设置cancels=[click_event]将取消click_event,其中click_event是另一个组件的.click方法的返回值。尚未运行的函数(或正在迭代的生成器)将被取消,但当前正在运行的函数将被允许完成。
everyfloat | NoneNone在客户端连接打开时,每隔多少秒运行此事件。以秒为单位解释。必须启用队列。

upload方法

参数数据类型默认值描述
fnCallable | None必需要封装为接口的函数,通常是机器学习模型的预测函数。函数的每个参数对应一个输入组件,函数应返回单个值或元组,其中每个元素对应一个输出组件。
inputsComponent | list[Component] | set[Component] | NoneNone用作输入的组件列表。如果函数不需要输入,这应该是一个空列表。
outputsComponent | list[Component] | NoneNone用作输出的组件列表。如果函数不返回输出,这应该是一个空列表。
api_namestr | None | Literal[False]None定义端点在API文档中的显示方式。可以是字符串、None或False。如果为False,端点将不会在API文档中显示。如果设置为None,端点将以无名端点的形式显示在API文档中,尽管此行为将在Gradio 4.0中更改。如果设置为字符串,端点将以给定的名称显示在API文档中。
status_trackerNoneNone
scroll_to_outputboolFalse如果为True,在完成时将滚动到输出组件。
show_progressLiteral[‘full’, ‘minimal’, ‘hidden’]“full”如果为True,在等待期间显示进度动画。
queuebool | NoneNone如果为True,在队列中排队请求(如果启用了队列)。如果为False,即使启用了队列,也不会将此事件放入队列中。如果为None,则使用gradio应用程序的队列设置。
batchboolFalse如果为True,则函数应处理一批输入,这意味着它应接受每个参数的输入值列表。列表应具有相等的长度(最多为max_batch_size长度)。然后函数必须返回一个元组的列表(即使只有一个输出组件),其中元组中的每个列表对应一个输出组件。
max_batch_sizeint4如果从队列中调用,将一起批处理的最大输入数量(仅当batch=True时相关)
preprocessboolTrue如果为False,将不会在运行’fn’之前运行组件数据的预处理(例如,如果使用Image组件调用此方法,则保留为base64字符串)。
postprocessboolTrue如果为False,将不会在将’fn’的输出返回给浏览器之前运行组件数据的后处理。
cancelsdict[str, Any] | list[dict[str, Any]] | NoneNone当此侦听器被触发时,取消其他事件的列表。例如,设置cancels=[click_event]将取消click_event,其中click_event是另一个组件的.click方法的返回值。尚未运行的函数(或正在迭代的生成器)将被取消,但当前正在运行的函数将被允许完成。
everyfloat | NoneNone在客户端连接打开时,每隔多少秒运行此事件。以秒为单位解释。必须启用队列。

结论

本文介绍了Gradio库中的UploadButton模块及其click和upload方法。通过使用UploadButton模块,开发者可以轻松地在Gradio应用程序中添加文件上传功能。通过详细了解UploadButton模块的参数和行为,并结合示例代码,开发者可以更好地理解和使用这一功能强大的组件。希望本文对你有所帮助,祝你在使用Gradio的过程中取得成功!


❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️

👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈

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

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

相关文章

requestAnimationFrame性能测试

requestAnimationFrame:每次重绘最多只调用一次回调函数 测试开启/关闭requestAnimationFrame的监听事件调用次数差异: 先说结论:存在约8倍的调用次数差距! requestAnimationFrame使用与否的次数差距 本次测试代码为drag事件 c…

Pycharm设置Python文件页眉默认信息(作者姓名、创建时间等)

次点击File->Settings->Editor->File and Code Templates->然后选择Python script. 后将下列代码复制到右边的框框中,然后选择apply应用,就可以啦 ##!/usr/bin/python3 # -*- coding: utf-8 -*- # Time : ${DATE} ${TIME} # Author : 作者…

【CSS加载动画特效】28种纯CSS实现的加载loading动态特效(附源码)

文章目录 写在前面涉及知识点效果展示1、Loading节点的创建2、部分效果的实现源码1)三点加载动画Html代码CSS样式代码 2)圆点矩阵加载特效Html代码CSS样式代码 3)圆形轨迹加载动画Html代码Css样式代码 4)栅栏式加载动画Html代码Cs…

Qt/C++音视频开发46-音视频同步保存到MP4

一、前言 用ffmpeg单独做视频保存不难,单独做音频保存也不难,难的是音视频同步保存到MP4中,重点是音视频要同步,其实这也不难,只要播放那边音视频同步后的数据,写入到文件即可。最难的是在播放过程中不断随…

python对dataframe索引的操作

目录 假如有个dataframe如下,这里需要去除第一个aa,保留最后一个aa 关键代码 # 如果你想保留第一个aa,那么keep就是first df.reset_index().drop_duplicates(subsetindex, keepfirst).set_index(index)结果如下: 原文链接&am…

10.1.5 查询指令是否为 Bash shell 的内置命令: type

通过 type 这个指令我们可以知道每个指令是否为 bash 的内置指令。 此外,由于利用 type 搜寻后面的名称时,如果后面接的名称并不能以可执行文件的状态被找到, 那么该名称是不会被显示出来的。也就是说, type 主要在找出“可执行文…

3 Prometheus安装

目录 1. 安装Prometheus 2. 基于linux安装Prometheus 下载安装包 将安装包放在合适的目录下 启动prometheus 访问 3. 配置Prometheus 3.1 global 3.2 alerting 3.3 rule_files 3.4 static_configs 4. 第一个指标 5 表达式浏览器 指标列表自动填充 指标名称筛选 指…

pytorch的whl文件安装

下载.whl文件,离线安装 提示:下载torch的稳定版本网址[https://download.pytorch.org/whl/torch_stable.html](https://download.pytorch.org/whl/torch_stable.html) 首先,查看主机显卡和安装的cuda版本。 可以在命令行输入:nvcc -V 如果…

使用jquery遇到的问题Unresolved function or method $()

今天在使用jquery的时候,发现页面中即使引入了jquery.min.js,js代码中仍然说找不到$(),原来的项目也是用的jquery.min.js,为什么之前的就没有这个问题呢。 然后利用搜索引擎查了一下解决方案,最后还是决定改成未压缩版…

触摸按键控制LED灯亮灭

文章目录 前言一、触摸按键介绍二、触摸按键电路原理模式一:模式二: 三、系统设计1、模块框图2、RTL视图 四、源码1、touch_led模块 五、效果六、总结七、参考资料 前言 环境: 1、Quartus18.1 2、vscode 3、板子型号:原子哥开拓者…

前端熟练发起ajax请求的多种方法

1.原生发起ajax 1.1概念: 说明:XMLHttpRequest是 JavaScript 的内置对象,用于在Web应用程序中向服务器发送HTTP请求和接收响应。通过XMLHttpRequest对象,可以实现异步加载数据,无需刷新整个页面即可更新部分内容。常…

Ubuntu 22.04 LTS RTX 2060 6G 显卡 GPU测试 甜甜圈 geeks3d GpuTest

下载 GpuTest主页地址 GpuTest - Cross-Platform GPU Stress Test and OpenGL Benchmark for Windows, Linux and OS X | Geeks3D.com 下载页 GpuTest download | Geeks3D 下载链接 https://ozone3d.net/gputest/dl/GpuTest_Linux_x64_0.7.0.zip 测试 unzip GpuTest_Li…

【C#】并行编程实战:同步原语(上)

在第4章中讨论了并行编程的潜在问题,其中之一就是同步开销。当将工作分解为多个工作项并由任务处理时,就需要同步每个线程的结果。线程局部存储和分区局部存储,某种程度上可以解决同步问题。但是,当数据共享时,就需要用…

Python实现PSO粒子群优化算法优化XGBoost回归模型(XGBRegressor算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 PSO是粒子群优化算法(Particle Swarm Optimization)的英文缩写,是一…

在线培训系统成为未来自主学习利器

传统教育模式存在的一个重要问题是,学生往往需要跟随教师和课堂的步调前进。这种模式可能会导致一些学生在学习过程中感到压力和挫败,并且不可避免地会出现部分学生落后于其他同学的情况。然而,在线培训系统可以赋予学生更多的自主权&#xf…

Linux系统编程(环境变量编程)

文章目录 前言一、环境变量表二、环境变量读写接口总结 前言 本篇文章我们来讲解环境变量编程,环境变量在Linux中可以说是非常重要的,那么这篇文章将会带大家来学习环境变量的编程。 一、环境变量表 在Linux系统中,环境变量是一种特殊的变…

SQL-每日一题【595.大的国家】

题目 World 表: 如果一个国家满足下述两个条件之一,则认为该国是 大国 : 面积至少为 300 万平方公里(即,3000000 km2),或者人口至少为 2500 万(即 25000000) 编写一个…

kafka第一课-Kafka快速实战以及基本原理详解

一、Kafka介绍 Kafka是一个分布式的发布-订阅消息系统,可以快速地处理高吞吐量的数据流,并将数据实时地分发到多个消费者中。Kafka消息系统由多个broker(服务器)组成,这些broker可以在多个数据中心之间分布式部署&…

react学习笔记——复习模块

前言:最近开始学习react,之前学习vue没有把笔记整理的特别好,非常后悔,感觉学了等于没学,这次要好好整理啊!本次学习参考教程为B站,张天禹老师的react全家桶。 文章目录 类的基本知识创建一个类…

时间序列分类 论文和数据集汇总

时间序列分类 时间序列广泛应用于金融、工业领域、健康、运维、交通领域。 其实异常检测任务也可以看作是一个时间序列分类任务,异常与否两类,或者异常有很多种,则是多分类问题。 时间序列分类的数据是多种的:时间轨迹数据&#x…