streamlit——搭建作业、文件上传网站(代码编写、服务器部署)

news2025/2/26 23:10:19

使用streamlit搭建简单的作业提交网站

文章目录

  • 使用streamlit搭建简单的作业提交网站
    • 一、引言
    • 二、streamlit代码
    • 三、搭建到服务器中
      • 1、放行安全组
      • 2、将代码放到服务器中
      • 3、配置依赖
      • 4、运行代码

一、引言

由于我平时需要收集各种类型的作业文件。但传统的微信收文件方式很让我头大,假如我们班级有39人,那么我需要接收39个人的消息文件,并另存到本地某文件夹下,还需要帮不规范的命名进行修改

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nllzRvCz-1687572250964)(D:\Administrator\Downloads\streamlit作业提交.png)]

后来我尝试过使用Flask编写上传文件,并部署到服务器上。不仅速度很慢,不美观,最主要的是麻烦,因为本身只需要上传一个文件,却使用了一个后端框架。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7PwklcRi-1687572250965)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230624091909431.png)]

二、streamlit代码

相比之下streamlit能够快速地完成我们所需要的内容。并且部署方便(在服务器上开通端口号直接运行即可)

可以根据需求修改上传的文件类型。

如上传zip文件,将st.file_uploader("选择文件", type="docx")第二个参数改为zip即可。

此外,运行上传多种类型写入列表即可 st.file_uploader("选择文件", type=["zip", "7z"])

import os
import streamlit as st

# 创建一个文件夹用于保存上传的文件
if not os.path.exists("uploads"):
    os.makedirs("uploads")

# 页面标题和说明文字
st.title("智能BG201作业提交")
st.write("请上传Word类型的文件,并输入学号+姓名来命名该文件")

# 选择文件并重命名
file_name = st.text_input("输入学号+姓名")
uploaded_file = st.file_uploader("选择文件", type="docx")


# 保存文件
if uploaded_file is not None:
    if file_name.strip():
        file_path = os.path.join("uploads", file_name+".docx")
        with open(file_path, "wb") as f:
            f.write(uploaded_file.getbuffer())
        st.success(f"已保存文件: {file_path}")
    else:
        st.error("请输入学号+姓名来命名文件")

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v4feKfcu-1687572250966)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230624095056338.png)]

三、搭建到服务器中

假设你已经有了一台华为云或者腾讯云等等的服务器。

1、放行安全组

在服务器控制台中找到安全组并放行端口8501\8502…

华为云安全组

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dItZyqRT-1687572250966)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230624095408041.png)]

腾讯云轻量级服务器不能使用安全组,在防火墙中配置端口号即可。

2、将代码放到服务器中

直接上传到服务器某路径下即可。这里我使用了虚拟环境。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V1AVLaxA-1687572250967)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230624095633545.png)]

3、配置依赖

# 使用超级用户权限
sudo su
# 创建虚拟环境
python3 -m venv venv
# 然后使虚拟环境生效
source venv/bin/activate  # (Linux激活虚拟环境)
venv\Scripts\activate  # windows
# 安装依赖
pip install streamlit

4、运行代码

使用nohup,保证关闭终端也能持续运行该进程。 --server.port用来设置端口号。保证已在第一步开通。

nohup streamlit run homework.py --server.port=8502

注意,如访问不了,有可能是以下几个原因造成的:

  1. 配置的安全组和服务器使用的安全组不对应
  2. 使用宝塔服务器面板,在宝塔面板的 安全中也放行端口,同时在服务器官网的安全组也放行。
  3. 确保进入的是你所配置的端口号网址。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fYbRYY46-1687572250968)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230624100223808.png)]

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

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

相关文章

PyQt5中文手册

PyQt5中文手册 一、介绍 本教程的目的是带领你入门PyQt5。教程内所有代码都在Linux上测试通过。PyQt4 教程是PyQt4的教程,PyQt4是一个Python(同时支持2和3)版的Qt库。 关于 PyQt5 PyQt5 是Digia的一套Qt5应用框架与python的结合&#xff…

实训五:数据库安全控制 - 授权及回收权限

授权及回收权限 第1关:授权任务描述相关知识MySql系统库中的权限表访问控制的两个阶段:授予的权限等级:MySQL 权限类型grant 语句的基本语法格式revoke 语句的基本语法格式查看权限限制权限 编程要求测试说明参考代码 第2关:授权-…

论文悦读(5)——NVM文件系统之CtFS(FAST‘22)文件系统

CtFS(FAST22) 1. 背景(Background)1.1 NVM1.2 NVM文件系统1.3 快速索引方案 2. 观察与动机(Observation & Motivation)3. CtFS设计与实现(Design & Implementation)3.1 系统…

ASP.NET Dotnet 3.5实验室LIMS系统源码

LIMS系统功能包括:检测管理(合同管理、样品管理、样品收发管理、工作任务分配、检测结果登记、复核及审核、留样管理等)、报告管理(报告编制、审核、签发、打印等)、原始记录管理、仪器设备管理、消耗品管理、文件管理…

Oralce系列十九:Oralce的体系结构

Oralce的体系结构 1. 物理结构2. 内存结构2.1 SGA2.2 后台进程 3. 逻辑结构 1. 物理结构 Oracle数据库的物理结构由参数文件、控制文件、数据文件和日志文件组成,用于存储和管理数据库的数据和元数据,每个文件都扮演着不可或缺的角色。 参数文件用于配…

盘点那些VS Code上的常用插件

插件可以使代码开发过程变得更加轻松和高效 文章目录 前言中文版主题插件显示错误游戏插件连接数据库拼写检查插件前端智能提示刷算法题的插件美化注释的插件美化括号的插件自动补全路径和文件名在浏览器中打开 HTML 文件在 VS Code 里面使用 Postman同步 VS Code 配置的插件 前…

MFC第七天 单机版数据库增删改的方法和用户登录(密码修改)、权限管理功能的员工管理系统的应用 以及 CCombox类的属性和方法

文章目录 员工管理系统的应用对TCHAR类型简介:Unicode软件开发中的文字转换方式有三种 CComboBox控件属性和类库介绍CBS_组合框控件属性CComboBox常用方法 员工管理系统示例代码如下Employer_sql.hEmployer_sql.cppMainDlg.hMainDlg.cpp: 实现文件CLoginDlg.hCLogin…

入坑 TS(一)

1、TS 采用类型后置的语法 const str: string "我是字符串"; const num: number "我是数值"; const bool: boolean false;函数怎么写? // 有返回值 function sayHello(str: string): string {return str; } // 无返回值 function sayHello…

Java throws关键字

Java的throws关键字用于声明异常。它向程序员提供了可能发生异常的信息。 因此,最好为程序员提供异常处理代码,以便保持程序的正常流程。 异常处理主要用于处理已检查异常。如果出现任何未检查的异常,例如NullPointerException,则…

jjy-shareV2.0一键分享到微博,QQ空间,QQ好友,微信

介绍 jjy-shareV2.0一键分享到微博,QQ空间,QQ好友,微信 作者:极纪元-橙 作者博客:https://cplvfx.blog.csdn.net/ 码云Gitee:橙cplvfx极纪元 (cplvfx) - Gitee.com 项目地址:jjy-shareV2.…

登录认证(全集)--jwt,Filter,Interceptor详细说明

一、登录校验 问题:在未登录情况下,我们也可以直接访问部门管理、员工管理等功能。由于浏览器与web服务器中的数据交互是通过HTTP协议的,而HTTP协议是无状态的–即每个页面中的请求和响应都是独立的,没有状态存在。所以我们需要进…

WordPress网站的robots文件代码怎样写比较好

本文记载和介绍的是wordpress的robots.txt的在哪儿?以及如何修改robots文件来禁止搜索引擎爬取/ajax目录下的文章。以及如何优化WordPress网站的robots文件 wordpress设置robots文件的目录:/wp-includes/functions.php,然后搜索do_robotstxt…

【雕爷学编程】Arduino动手做(123)---Multi-function扩展板

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

随机数检测(一)

随机数检测(一)- 随机数自测试概述 1 概述2 产品形态划分和检测项目3 测试方式3.1 概述3.2 单比特频数检测方法3.3块内频数检测方法 1 概述 随机数发生器设计完成后,使用随机数发生器的产品需对其执行测试,防止应用过程中产生不合…

Redis的数据类型及对应的数据结构(二)

接上篇:Redis的数据类型及对应的数据结构(一)_鱼跃鹰飞的博客-CSDN博客 本篇主要讨论剩下的几种数据结构的应用场景 应用场景 集合的主要几个特性,无序、不可重复、支持并交差等操作。 因此 Set 类型比较适合用来数据去重和保…

卧剿,6万字!30个方向130篇!CVPR 2023 最全 AIGC 论文!一口气读完。

一杯奶茶,成为 AIGCCV 视觉前沿弄潮儿! 25个方向!CVPR 2022 GAN论文汇总 35个方向!ICCV 2021 最全GAN论文汇总 超110篇!CVPR 2021 最全GAN论文梳理 超100篇!CVPR 2020 最全GAN论文梳理 在最新的视觉顶会 C…

Java多重捕获块

try块后面可以跟随一个或多个catch块。每个catch块必须包含一个不同的异常处理程序。因此,如果您在不同的异常发生时需要执行不同的任务,请使用Java多重捕获块。 需要记住的要点 一次只会发生一个异常,同时只有一个catch块被执行。 所有的ca…

实训五:数据库安全控制 - MySQL数据库 - 授权与撤销授权

MySQL数据库 - 授权与撤销授权 第1关:数据库授权任务描述相关知识用户管理授权方式 编程要求测试说明参考代码 第2关:数据库撤销权限任务描述相关知识撤销权限 编程要求测试说明参考代码 第1关:数据库授权 任务描述 本关任务:新…

Ubuntu安装Anaconda详细步骤(Ubuntu22.04.1,Anaconda3-2023.03)

本文主要讲述了在Ubuntu中安装anaconda的具体步骤 准备环境:Ubuntu22.04.1,Anaconda3 1.下载Anaconda3 在清华镜像下载Linux版本的anaconda 清华镜像官网Anaconda下载 我选择的是Anaconda3-2023.03-Linux-x86_64.sh 下载好的Anaconda3-2023.03-Linux-…

拦截器Interceptor及与过滤器Filter的区别

统一拦截–拦截器Interceptor 1.概述 概念:是一种动态拦截方法调用的机制,类似于过滤器。Spring框架中提供的,用来动态拦截控制器方法的执行。作用:拦截请求,在指定的方法调用前后,根据业务需要执行预先设定的代码。与过滤器Fil…