python服务器文件上传下载+GUI【tkinter】

大概就是一个通过应用程序来和服务器打交道的这么一个,小东西

1.GUI

用的是tkinter

 1 # -*- coding: UTF-8 -*-
 2 from tkinter import *
 3 import tkinter.filedialog
 4 import requests
 5
 6
 7 def Upload():
 8     print(‘upload‘)
 9     selectFileName = tkinter.filedialog.askopenfilename(title=‘选择文件‘)#选择文件
10
11     r = requests.post(‘http://127.0.0.1:8000/upload‘, files={‘file‘:open(selectFileName,‘rb‘)})
12     print(r.content.decode(‘utf-8‘))
13     setText = r.content.decode(‘utf-8‘)
14     print(setText.__class__)
15     e1.delete(0,END)
16     e1.insert(0,setText)
17
18 def Download():
19     link = e1.get()
20     files = requests.get(link)
21     files.raise_for_status()
22     path = tkinter.filedialog.asksaveasfilename()
23     print(files.content)
24     with open(path, ‘wb‘) as f:
25         f.write(files.content)
26
27
28 root = Tk()
29 root.title(‘Download‘)
30 root.geometry(‘+500+300‘)
31
32 e1 = Entry(root,width=50)
33 e1.grid(row=0, column=0)
34
35 btn1 = Button(root,text=‘ 上传 ‘, command=Upload).grid(row=1, column=0,pady=5)
36 btn2 = Button(root,text=‘ 下载 ‘, command=Download).grid(row=2, column=0,pady=5)
37 btn3 = Button(root,text=‘ 复制 ‘, ).grid(row=3, column=0,pady=5)
38
39 mainloop()

服务器对中文文件名很不友好,只要出现中文文件名,必报错,搞得我很没心情,所以Copy函数就没实现

还有,一大堆乱七八糟的编码,反正我现在也没搞明白

一会必须用bytes()转二进制码,一会又要decode又要encode,有点迷。。。

2.服务器

用的是巨简易的框架,简单的返回一两个页面就可以了,毕竟是模拟

 1 # -*- coding: UTF-8 -*-
 2 import web
 3 urls = (
 4     ‘/‘,‘Index‘,
 5     ‘/upload‘,‘Upload‘,
 6 )#路由
 7
 8 render = web.template.render(‘template‘)
 9
10 class Index:
11     def GET(self):#函数名时请求方式
12         return render.index()
13
14 class Upload:
15     def POST(self):
16         info = web.input(file = {})#接收数据
17         filename = info[‘file‘].filename
18         thisfile = info[‘file‘].file.read()
19         with open(‘static/%s‘ %filename, ‘wb‘) as f:
20             f.write(thisfile)
21         s = format(‘http://127.0.0.1:8000/static/%s‘ %filename)
22         return s
23
24
25 app = web.application(urls, globals())
26
27 if __name__ == ‘__main__‘:#入口函数判断
28     app.run()
29
30 #‘Server.py 127.0.0.1:8000‘

之前用Django写了一个简单的音乐网站,好多细节都忘了,这个用的时候感觉有点像,也算是小小地回忆了一下

总结

放假是真的无聊,想学点比较实践的知识,但发现无从下手,真的很迷茫

这回就当随便搞搞小东西,练练手了吧

中文真的不友好!!!!!!!!!!!!!!!!!!!!!!!!!!

太tm麻烦了,要不是这些个乱七八糟的编码问题,我能把花费时间缩短80%!!!

多么可怕的数字,但就是这无脑的问题,能折腾的人死去活来

哦对了requsets包里的post方法,当参数有files=的时候,这个上传的文件名不能是中文

否则服务器那别收不到参数

最后改了urllib3.py源码下的一个函数的解码方式,从‘ascll’改成了‘utf-8’,才能上传中文文件名的文件

但是,下载中文文件的时候还是会出错比如访问

http://127.0.0.1:8000/static/你好.txt的时候,服务器那边会报错“WSGI啥啥”,这个错误,baidu,google都没有,无解,放弃,心情很差

时间: 2024-09-29 01:37:10

python服务器文件上传下载+GUI【tkinter】的相关文章

服务器文件上传下载(XShell+Xftp)

1.下载XShell安装包+Xftp安装包.百度网盘(XShell):https://pan.baidu.com/s/1eR4PFpS 百度网盘(Xftp):https://pan.baidu.com/s/1eSkNhia 2.打开XShell,新建会话.文件-->新建-->在弹出框中填写主机名等信息.在点击右侧菜单"用户身份验证" 填写用户名及密码.-->点击"连接"或者双击连接.在弹出框中选择"永久保存***". 3.安装X

win服务器 文件上传下载出现“未指定的错误” 解决方法汇总

环境 WIN平台IIS服务器   经常出现于ASPX页面 汇总 1.权限问题 出现场景 : 基于ACCESS数据库   原因解析 : 1.首先需要排除自身问题,例如建表使用关键字,格式错误,插入数据与数据库类型不匹配等等 2.TEMP权限检查,当数据写入数据库的时候需要获取当前服务器权限只有设置了IIS的temp写入权限才能进行数据写入 解决办法 : 第一种解决方法:使用Ms Access里的“工具->数据库实用工具->压缩和修复数据库”来修复db/global.asa.如果修复后还是出错,请

【Linux】本机与服务器文件互传、Linux服务器文件上传下载

一.Linux下文件互传,scp命令实例 1.Linux下目录复制:本机->远程服务器 scp -r /home/abc/test1 root@192.168.0.1:/home/bcd/test2  (本机目录路径    远程机用户名@IP:/目录) 2.Linux下目录复制:远程服务器->本机 scp -r root@192.168.0.1:/home/bcd/test2 /home/abc/test1 (远程机用户名@IP:/目录                本机目录路径) 3.Lin

Linux 服务器文件上传下载 rz/sz命令

我们一般可以或者使用xftp或者其他的上传工具,但这样的话我们一般就得使用两个工具使用起来比较繁琐,看到有的小伙伴使用rz感觉合适不错,现在来试试:1[[email protected] ~]# rz -y-bash: rz: command not found什么情况,难道xshell没有这个命令?原来rz 和 sz 需要安装. 从服务端发送文件到客户端:sz filename从客户端上传文件到服务端:rz在选择文件,上传文件. 首先使用yum源安装,安装命令:yum install lrzs

300行python代码的轻量级HTTPServer实现文件上传下载

最近,利用一下空余的时间对以前的Python知识进行了巩固和复习,便闲来无事写了一个轻量级的HTTPServer来实现文件上传下载,不废话,直接上代码: #!/usr/bin/env python # -*- coding: utf-8 -*- __version__ = "0.1" __all__ = ["SimpleHTTPRequestHandler"] __author__ = "kumikoda" __home_page__ = &qu

Android与Asp.Net Web服务器的文件上传下载BUG汇总【更新】

遇到的问题: 1.java.io.IOException: open failed: EINVAL (Invalid argument)异常,在模拟器中的sd卡创建文件夹和文件时报错 出错原因可能是:(1)文件名称中含有不符合规范的字符,比如“:”,“?”或者空格等.(2)需要先创建文件夹目录再创建文件,不能直接创建文件. 2. android.os.NetworkOnMainThreadException异常,从服务器请求数据后,写入文件时报错 出错原因:在主线程内执行了访问http的操作,最

使用Paramiko实现SSH登陆,文件上传下载

1,SSh登陆命令行实现: #!/usr/bin/env python # encoding: utf-8 import paramiko private_key_path = '/Users/aolens/.ssh/id_rsa' key = paramiko.RSAKey.from_private_key_file(private_key_path) ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.Aut

Python Selenium 文件上传(二)

今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python Selenium 文件上传(一) 这种方法直接通过命令行执行脚本时没有问题,可以成功上传,但是如果通过saltstack 远程控制执行时,SendKeys就定位不到窗口了. 所以采用这种新的方式来实现文件上传功能,并完美的解决了这个问题. 具体操作步骤如下: 1.下载工具 AutoIt及使用 AutoIt目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows

Python WebDriver 文件上传(二)

今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python WebDriver 文件上传(一) 这种方法直接通过命令行执行脚本时没有问题,可以成功上传,但是如果通过saltstack 远程控制执行时,SendKeys就定位不到窗口了. 所以采用这种新的方式来实现文件上传功能,并完美的解决了这个问题. 具体操作步骤如下: 1.下载工具 AutoIt及使用 AutoIt目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Window