如何使用Falcon Python从POST请求中保存图像



我正在尝试找到一种方法来保存从 POST 请求中获得的图像,到目前为止,我找到的所有解决方案最终都不起作用,例如,这个。

上述解决方案的问题是我只是得到一个超时错误。

我现在尝试稍微更改代码,但它仍然不起作用,你能帮我吗?

def on_post(self, req, resp):
"""Handles Login POST requests"""
json_data = json.loads(req.bounded_stream.read().decode('utf8'))
base64encoded_image = json_data['image_data']
with open('pic.png', "wb") as fh:
fh.write(b64decode(base64encoded_image))
resp.status = falcon.HTTP_203
resp.body = json.dumps({'status': 1, 'message': 'success'})

我得到的错误是"json.decoder.JSONDecodeError:期望值:第 1 行第 1 列(字符 0(">

在你的猎鹰后端

尝试猎鹰多部件

pip3 install falcon-multipart

然后将其作为中间件包含在内。

from falcon_multipart.middleware import MultipartMiddleware
api = falcon.API(middleware=[MultipartMiddleware()])

这将解析任何multipart/form-data传入的请求,并将键放在req._params中,包括文件,以便您获得该字段作为其他参数。

# your image directory
refimages_path = "/my-img-dir"
# get incoming file
incoming_file = req.get_param("file")
# create imgid
imgId = str(int(datetime.datetime.now().timestamp() * 1000))
# build filename
filename = imgId + "." + incoming_file.filename.split(".")[-1]
# create a file path
file_path = refimages_path + "/" + filename
# write to a temporary file to prevent incomplete files from being used
temp_file_path = file_path + "~"
with open(temp_file_path, "wb") as f:
f.write(incoming_file.file.read())
# file has been fully saved to disk move it into place
os.rename(temp_file_path, file_path)
<小时 />

在您的前端

在请求标头中发送Content-Type: multipart/form-data;。另外不要忘记提供boundary因为如RFC2046中所述:

多部分实体的内容类型字段需要一个参数, "边界"。然后,边界分隔符行定义为完全由两个连字符("-",十进制值 45(组成的行

后跟 Content-Type 标头中的边界参数值 字段、可选的线性空格和终止 CRLF。

相关内容

  • 没有找到相关文章

最新更新