首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将图像发布到REST API并使用Falcon库收集数据的正确方式是什么?

将图像发布到REST API并使用Falcon库收集数据的正确方式是什么?
EN

Stack Overflow用户
提问于 2016-08-09 18:43:52
回答 1查看 2.3K关注 0票数 3

我尝试通过REST API发布图像以对其进行处理。我使用falcon作为后端,但不知道如何发布和接收数据。

这就是我目前发送文件的方式

代码语言:javascript
复制
img = open('img.png', 'rb')
r = requests.post("http://localhost:8000/rec",
files={'file':img},
data = {'apikey' : 'bla'})

然而,在Falcon repo上,他们说Falcon不支持HTML forms来发送数据,相反,它的目标是所有的POSTed和PUTed数据,我没有区分POSTed图像数据和上面发送的数据。

因此,最终,我想了解发送图像和通过REST API接收图像的正确解决方法是什么,该API应该是由Falcon编写的。你能给我一些建议吗?

EN

回答 1

Stack Overflow用户

发布于 2017-01-16 20:26:15

为此,您可以使用以下方法:

Falcon API代码:

代码语言:javascript
复制
import falcon
import base64
import json

app = falcon.API()
app.add_route("/rec/", GetImage())

class GetImage:

    def on_post(self, req, res):

        json_data = json.loads(req.stream.read().decode('utf8'))
        image_url = json_data['image_name']
        base64encoded_image = json_data['image_data']
        with open(image_url, "wb") as fh:
            fh.write(base64.b64decode(base64encoded_image))

        res.status = falcon.HTTP_203
        res.body = json.dumps({'status': 1, 'message': 'success'})

对于API调用:

代码语言:javascript
复制
import requests
import base64

with open("yourfile.png", "rb") as image_file:
    encoded_image = base64.b64encode(image_file.read())

r = requests.post("http://localhost:8000/rec/", 
                  data={'image_name':'yourfile.png',
                        'image_data':encoded_image
                       }
                 )
print(r.status_code, r.reason)

我希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38848575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档