【问题标题】:How to serve file with flask and then download it with curl如何用烧瓶提供文件,然后用 curl 下载
【发布时间】:2016-07-26 08:22:21
【问题描述】:

所以我正在尝试使用flask 制作一个API,然后将它与javascript 一起使用以在浏览器上显示一些图像,但是我在单元测试图像发送(通过Flask)是否正常工作时遇到了问题。这是我现在的烧瓶代码

@api.route("/pictures/<picture_name>")
def send_picture(picture_name):
    """Used to send the requested picture from the pictures folder."""
    return api.send_static_file(picture_name)

然后我尝试使用以下命令下载例如图像puppy.png

curl -O --request GET "http://localhost:8000/pictures/tank.png"

我可以在我的浏览器上打开相同的链接并完美地查看文件,因此我知道send_static_file 函数工作正常。但是上面的curl 命令以无法打开的方式下载文件。还有什么我做错了吗?

我对 Python 和 Flask 还不是很熟悉...

编辑:不知何故,同样的事情与wget 一起工作得很好,所以我想知道这是否是我进行 curl 调用的方式的问题。有什么我做错了吗?有人能解释一下究竟是如何通过 HTTP 下载的吗?如在获取请求中是否有任何特殊标头?如果不是,那么响应的格式是什么?文件是如何存储的?

【问题讨论】:

  • 您使用curl 方法时显示的错误是什么?
  • 另外你不需要--request标签,因为它默认为GET
  • @GIRISHRAMNANI 我编辑了我的问题。对于第二条评论,我喜欢把它放在那里明确:)
  • 如果您使用-o 明确提供文件的名称,它是否有效,例如。 curl -o tank.png --request GET "http://localhost:8000/pictures/tank.png"
  • 不,我没有尝试过。为什么会有所作为?

标签: javascript python http curl flask


【解决方案1】:
curl -X POST -F **file=@/home/developer/Documents/cloudish_csv/cloudish1.csv** http://127.0.0.1:5000/cloudish/daily_update?api_key=hqjjnynxtgqvkqzowdxpefdv

将您的文件路径放在 curl 请求中的文件字段中,并使用 stringio 下载 csv 调用另一个扩展名,如上面没有任何文件字段。附加示例代码....

class Clouddish_forecast(Resource):
   def get(self):
       output = StringIO()
       out = pd.read_csv("/home/developer/Downloads/vig.csv",sep=",")
       out.to_csv(output, index=False)
       return Response(output.getvalue(), mimetype="text/csv")

vig.csv 将通过此返回语句下载

【讨论】:

  • 不要在您的文件字段中使用相同的 ** 以供您识别
猜你喜欢
  • 1970-01-01
  • 2014-08-25
  • 2021-07-15
  • 1970-01-01
  • 2017-05-21
  • 2020-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多