web的文件上传
server.py
from flask import * app=Flask(__name__) @app.route('/upload',methods=["POST"]) def uploadFile(): msg="" try: if "fileName" in request.values:#如果服务器收到传值信息 fileName=request.values.get("fileName") data=request.get_data() fobj=open("upload"+fileName,"wb") fobj.write(data)#写入传值的文档内容 fobj.close() msg="OK" else: msg="没有按要求上传文件" except Exception as err: print(err) msg=str(err) return msg if __name__=="__main__": app.run(port=5000,debug=True)
client.py
import urllib.request import urllib.parse import os url="http://127.0.0.1:5000/upload" fileName=input("Enter the file:") if os.path.exists(fileName):#如果输入的文件是存在的情况下 fobj=open(fileName,"rb")#因为文件是存在的所以我们直接打开文件 data=fobj.read()#读取文件中的资料 fobj.close()#关闭文件 '''找到文件的文本结尾 p=fileName.rfind("\\") fileName=fileName[p+1:] ''' p=fileName.rfind("\\") fileName=fileName[p+1:] print("准备上传:"+fileName) ''' 客户端要上传二进制数据,要设置表头content-type headers={'content-type':'application/octet-stream'} ''' headers = {'content-type': 'application/octet-stream'} purl=url+"?fileName="+urllib.parse.quote(fileName)#把文件上传给服务器url+文件名。 ''' urllib.request.Request()三个参数重点 地址,上传的文件内容,头 ''' req=urllib.request.Request(purl,data,headers) msg=urllib.request.urlopen(req) msg=msg.read().decode()#读取返回值并decode()解码 if msg=="OK":#表示上传成功 print("成功上传:",len(data),"字节") else: print(msg) else: print("文件不存在")
一纸高中万里风,寒窗读破华堂空。
莫道长安花看尽,由来枝叶几相同?