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("文件不存在")

  

 

posted @ 2019-07-01 23:51  薄眠抛却陈年事。  阅读(165)  评论(0编辑  收藏  举报