当前位置:   article > 正文

Python flask 实现文件发送和接收保存_flask 接受文件并转发

flask 接受文件并转发

1.先用flask起个服务

import json

from flask import Flask, request

app = Flask(__name__)


@app.route("/a", methods=["POST"])
def save_file():
    data = request.files
    print(type(data))
    print(data)
    file = data['file']
    print(file.filename)
    print(type(request.headers))
    print(request.headers)
    print(request.headers.get('File-Name'))
    # 文件写入磁盘
    file.save(file.filename)

    return "已接收保存"


if __name__ == '__main__':
    app.run(host="0.0.0.0", port=1234)


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

2. 本地客户端使用requests.post发送文件

import json
import os

import requests

src_dir = 'E:\\a'
for root, dirs, files in os.walk(src_dir, topdown=True):
    for name in files:
        file = os.path.join(root, name)
        files_t = {'file': ('new_' + name, open(file, 'rb'))}
        headers = {'File-Name': 'new_' + name}
        r = requests.post("http://192.123.123.123:1234/a", files=files_t, headers=headers)

        print(r.text)
        print(r)


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

3. 下面是二进制流转发

import json

from flask import Flask, request

app = Flask(__name__)


@app.route("/a", methods=["POST"])
def save_file():
    data = request.data
    print(data, '---------------')
    file_name = request.headers.get('File-Name')
    print(file_name)
    with open(file_name, 'wb') as f:
        f.write(data)

    return "已接收保存"


if __name__ == '__main__':
    app.run(host="0.0.0.0", port=1234)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
import json
import os

import requests

src_dir = 'E:\\a'
for root, dirs, files in os.walk(src_dir, topdown=True):
    for name in files:
        file = os.path.join(root, name)
        files_t = {'file': ('new_' + name, open(file, 'rb'))}
        headers = {'Content-type': 'application/octet-stream', 'File-Name': 'new_' + name}
        with open(file, 'rb') as f:
            r = requests.post("http://192.123.123.123:1234/a", data=f, headers=headers)

        print(r.text)
        print(r)


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

参考文档:
https://docs.python-requests.org/en/latest/user/quickstart/#post-a-multipart-encoded-file
https://blog.csdn.net/iloveyin/article/details/21444613

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号