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


大概就是一个通过应用程序来和服务器打交道的这么一个,小东西
1.GUI
用的是tkinter
# -*- coding: UTF-8 -*-
from tkinter import *
import tkinter.filedialog
import requests def Upload():
print('upload')
selectFileName = tkinter.filedialog.askopenfilename(title='选择文件')#选择文件 r = requests.post('http://127.0.0.1:8000/upload', files={'file':open(selectFileName,'rb')})
print(r.content.decode('utf-8'))
setText = r.content.decode('utf-8')
print(setText.__class__)
e1.delete(0,END)
e1.insert(0,setText) def Download():
link = e1.get()
files = requests.get(link)
files.raise_for_status()
path = tkinter.filedialog.asksaveasfilename()
print(files.content)
with open(path, 'wb') as f:
f.write(files.content) root = Tk()
root.title('Download')
root.geometry('+500+300') e1 = Entry(root,width=50)
e1.grid(row=0, column=0) btn1 = Button(root,text=' 上传 ', command=Upload).grid(row=1, column=0,pady=5)
btn2 = Button(root,text=' 下载 ', command=Download).grid(row=2, column=0,pady=5)
btn3 = Button(root,text=' 复制 ', ).grid(row=3, column=0,pady=5) mainloop()
服务器对中文文件名很不友好,只要出现中文文件名,必报错,搞得我很没心情,所以Copy函数就没实现
还有,一大堆乱七八糟的编码,反正我现在也没搞明白
一会必须用bytes()转二进制码,一会又要decode又要encode,有点迷。。。
2.服务器
用的是巨简易的框架,简单的返回一两个页面就可以了,毕竟是模拟
# -*- coding: UTF-8 -*-
import web
urls = (
'/','Index',
'/upload','Upload',
)#路由 render = web.template.render('template') class Index:
def GET(self):#函数名时请求方式
return render.index() class Upload:
def POST(self):
info = web.input(file = {})#接收数据
filename = info['file'].filename
thisfile = info['file'].file.read()
with open('static/%s' %filename, 'wb') as f:
f.write(thisfile)
s = format('http://127.0.0.1:8000/static/%s' %filename)
return s app = web.application(urls, globals()) if __name__ == '__main__':#入口函数判断
app.run() #'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都没有,无解,放弃,心情很差
python服务器文件上传下载+GUI【tkinter】的更多相关文章
- python day32--struct,文件上传下载
一.struct模块 可以把要发送的数据长度转换成固定长度的字节 struct.pack('i',数据长度) struct.unpack('i',数据长度) 二.上传下载文件作业 server imp ...
- 服务器文件上传下载(XShell+Xftp)
1.下载XShell安装包+Xftp安装包.百度网盘(XShell):https://pan.baidu.com/s/1eR4PFpS 百度网盘(Xftp):https://pan.baidu.com ...
- win服务器 文件上传下载出现“未指定的错误” 解决方法汇总
环境 WIN平台IIS服务器 经常出现于ASPX页面 汇总 1.权限问题 出现场景 : 基于ACCESS数据库 原因解析 : 1.首先需要排除自身问题,例如建表使用关键字,格式错误,插入数据与 ...
- Python socket文件上传下载
python网络编程 程序的目录结构 socketDemo ├── client │ ├── cli.py │ └── local_dir │ └── lianxijiangjie.mp4 ...
- Python 基于Python实现Ftp文件上传,下载
基于Python实现Ftp文件上传,下载 by:授客 QQ:1033553122 测试环境: Ftp客户端:Windows平台 Ftp服务器:Linux平台 Python版本:Python 2.7 ...
- python 实现远端ftp文件上传下载
python 实现ftp上传下载 * 脚本需要传入两个参数,参数1为需要从远端ftp站点下载文件名称,参数2为已知需要下载的文件md5值,文件下载完成后会自动进行md5值校验 * 运行示例 [root ...
- xftp实现本地与服务器的文件上传下载(windows)
背景: Jemter环境搭建,需上传下载服务器文件到aws服务器上,由于secureCRT的局限性它只支持pub格式的密钥,不支持pem格式密钥,xshell是支持pem格式的,所以尝试安装xshel ...
- 一、手把手教你docker搭建fastDFS文件上传下载服务器
在搭建fastDFS文件上传下载服务器之前,你需要准备的有一个可连接的linux服务器,并且该linux服务器上已经安装了docker,若还有没安装docker的,先百度自行安装docker. 1.执 ...
- Python接口自动化——文件上传/下载接口
〇.前言 文件上传/下载接口与普通接口类似,但是有细微的区别. 如果需要发送文件到服务器,例如:上传文档.图片.视频等,就需要发送二进制数据,上传文件一般使用的都是 Content-Type: mul ...
随机推荐
- [2017BUAA软工助教]团队alpha得分总表
一.累计得分 项目 介绍 采访 贡献分 功能 技术 α例会 α发布 α测试 α展示 α事后 合计 满分 10 10 10 10 10 50 10 10 150 10 280 hotcode5 10 9 ...
- 【学习总结】Git学习-参考廖雪峰老师教程五-远程仓库
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
- day 7-5 生产者消费者模型
一. 生产者和消费者模型 在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题.该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度. 二. 为什么要使用生产者和消费者模式 ...
- WPF通过DynamicResource实现给界面动态更换皮肤
在我们的程序中有时候需要去实现动态更换皮肤的效果,从而完成一些个性化的设置,那么我们究竟怎样去实现动态换皮肤的效果呢?那么我们经常用到的就是设置不同的Style,并且在主程序的xaml文件中通过Dyn ...
- CSS3圆角详解(border-radius)
1.CSS3圆角的优点 传统的圆角生成方案,必须使用多张图片作为背景图案.CSS3的出现,使得我们再也不必浪费时间去制作这些图片了,而且还有其他多个优点: 减少维护的工作量.图片文件的生成.更新.编写 ...
- 莫烦theano学习自修第七天【回归结果可视化】
1.代码实现 from __future__ import print_function import theano import theano.tensor as T import numpy as ...
- 三星 SCX-4521NS 网络打印机 在XP 下 强行 设置 安装
添加打印机加上之后,图标是半虚的,状态脱机,网上找了很多方法都不好使. 包括官方的:http://www.samsung.com/cn/support/skp/faq/442292 然后死马当活马医, ...
- Django框架中的Context使用
Django框架中的Context使用 2017年11月09日 20:01:09 aweilark 阅读数:1113 转载自:http://www.aichengxu.com/python/606 ...
- 错误代码 0x800700b7 配置错误定义了重复的“system.web.extensions/scripting/scriptResourceHandler”节
如果是运行VS时就报错,改个端口号就可以解决问题,改完以下两个地方重新运行
- .net core 2.0 配置Session
本文章为原创文章,转载请注明出处 配置Session 在Startup.cs文件的ConfigureServices方法中添加session services.AddSession(); 在Start ...