Streamlit 實現網頁中上傳文件到 FTP 服務器
大家好,今天給大家帶來的是在網頁裏實現上傳文件到 FTP 服務器中的方法。
今天的實現效果
今天的實現代碼
import streamlit as st
import ftplib
from ftplib import error_perm
st.set_page_config(page_title="網頁版FTP上傳功能演示", layout="wide")
st.markdown("""
<style>
.stProgress > div > div > div > div {
background-image:linear-gradient(to right, #99ff99, #00ccff);
}
</style>
""", unsafe_allow_html=True)
def progress(percent):
bar.progress(percent)
file = st.file_uploader("請選擇要上傳的文件", accept_multiple_files=True)
if file is not None:
if len(file)>0:
file_name_list = []
for m in range(len(file)):
file_name_list.append(file[m].name)
with st.expander("點擊查看待上傳的文件列表"):
st.write(file_name_list)
c1, c2 = st.columns(2)
with c1:
ftp_host = st.text_input("請輸入FTP服務器IP")
ftp_port = st.number_input("請輸入服務器端口號")
with c2:
ftp_username = st.text_input("請輸入FTP用戶名")
ftp_password = st.text_input("請輸入FTP用戶密碼")
if len(ftp_host) > 0 and ftp_port > 0 and len(ftp_username) > 0 and len(ftp_password) > 0:
ftp = ftplib.FTP(timeout=30)
ftp.connect(ftp_host, int(ftp_port))
try:
ftp.login(ftp_username, ftp_password)
if ftp.getwelcome().startswith("220"):
st.success("連接FTP服務器成功!")
ftp.cwd("FTP")
ftp.mkd("新上傳的文件")
ftp.cwd("新上傳的文件")
with st.form("FTP上傳"):
submitted = st.form_submit_button("點我開始上傳文件")
if submitted:
bar = st.progress(0)
if len(file_name_list) > 0:
for x in range(len(file_name_list)):
ftp.storbinary("STOR " + str(file_name_list[x]), file[x], blocksize=8192)
progress(100)
st.success("上傳完成!")
with st.expander("點擊查看上傳成功的文件列表"):
st.write(ftp.nlst())
ftp.quit()
except error_perm:
st.error("連接FTP失敗,請檢查輸入信息是否正確!")
今天的實現原理
1、連接 FTP 服務器使用了 ftplib 模塊,具體使用方法如下:
import ftplib
ftp_host = st.text_input("請輸入FTP服務器IP")
ftp_port = st.number_input("請輸入服務器端口號")
ftp_username = st.text_input("請輸入FTP用戶名")
ftp_password = st.text_input("請輸入FTP用戶密碼")
ftp = ftplib.FTP(timeout=30)
ftp.login(ftp_username, ftp_password)
ftp.connect(ftp_host, int(ftp_port))
上述代碼很簡單,引入 ftplib,傳入用戶名、密碼、FTP 服務器 IP、端口號即可
2、在 FTP 服務器新創建一個文件夾的方法如下:
ftp.mkd("要創建的文件夾名稱")
在 FTP 服務器上進入一個文件夾的方法如下:
ftp.cwd("要進入的文件夾名稱")
3、列出 FTP 服務器上的某個文件夾下的文件名列表方法如下:
st.write(ftp.nlst())
4、斷開 FTP 連接的方法如下:
ftp.quit()
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/r2QBOHRKrrl5RVhdjO_Z2A