flask客户端传二进制图片到服务端
时间: 2023-08-15 19:03:17 浏览: 117
在 Flask 中,客户端可以使用 HTTP POST 请求向服务端发送二进制图片数据。客户端可以使用 Python 的 requests 库实现向服务端发送 POST 请求,并携带二进制图片数据。
以下是一个简单的示例代码:
客户端代码:
```python
import requests
with open("image.png", "rb") as image_file:
encoded_string = base64.b64encode(image_file.read())
url = "http://localhost:5000/upload_image"
data = {"image_data": encoded_string}
response = requests.post(url, data=data)
print(response.text)
```
在上述代码中,首先使用 Python 内置的 `open()` 函数打开一个二进制图片文件,并使用 base64 编码将其转换成字符串 `encoded_string`。接下来,构造一个包含 `image_data` 字段的字典 `data`,并将 `encoded_string` 赋值给该字段。然后,使用 requests 库的 `post()` 方法向服务端发送 POST 请求,并携带 `data` 字典作为请求体。
服务端代码:
```python
from flask import Flask, request
import base64
app = Flask(__name__)
@app.route('/upload_image', methods=['POST'])
def upload_image():
image_data = request.form['image_data']
decoded_data = base64.b64decode(image_data)
with open("image.png", "wb") as image_file:
image_file.write(decoded_data)
return "Image uploaded successfully!"
if __name__ == '__main__':
app.run()
```
在上述代码中,使用 Flask 框架定义了一个路由 `/upload_image`,该路由接受客户端发送的 POST 请求,并从请求体中获取 `image_data` 字段。然后,使用 base64 解码将 `image_data` 转换成二进制数据,并使用 Python 内置的 `open()` 函数将其写入到文件中。
注意,这只是一个简单的示例,实际应用中可能需要对图片进行处理,比如检查图片格式、大小等等。
阅读全文