zoukankan      html  css  js  c++  java
  • 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("文件不存在")
    

      

    一纸高中万里风,寒窗读破华堂空。 莫道长安花看尽,由来枝叶几相同?
  • 相关阅读:
    innodb next-key lock
    kafka-0.9
    aggregations 详解1(概述)
    mapping 详解5(dynamic mapping)
    mapping 详解4(mapping setting)
    mapping 详解3(Meta-Fields)
    mapping 详解2(field datatypes)
    mapping 详解1(mapping type)
    分布式 ES 操作流程解析
    ES 中的那些坑
  • 原文地址:https://www.cnblogs.com/byczyz/p/11117643.html
Copyright © 2011-2022 走看看