flask 如何通过 http 请求下载一个文件 - V2EX
lydhr
V2EX    Flask

flask 如何通过 http 请求下载一个文件

  •  
  •   lydhr Dec 4, 2015 6250 views
    This topic created in 3816 days ago, the information mentioned may be changed or developed.
    • 想写一个 ios 端通过 http 请求上传一个文件,然后处理后在下载下来
    • 服务器端用的 flask ,已经调通了上传,如何用 flask 处理下载文件的请求呢?
    • 查了 doc 的一个 send_from_directory 方法但是跑不起来
      上传文件代码

      @app.route('/saveFile', methods=['POST']) def saveObjZip(): try: # We will save the zip file to disk. myfile = flask.request.files['myFile'] filename_ = str(datetime.datetime.now()).replace(' ', '_') + \ werkzeug.secure_filename(myfile.filename) filename = os.path.join(UPLOAD_FOLDER, filename_) myfile.save(filename) logging.info('Saving to %s.', filename) except Exception as err: logging.info('Uploaded file open error: %s', err) return err; 
    4 replies    2015-12-05 02:59:55 +08:00
    loading
        1
    loading  
       Dec 4, 2015 via Android
    如果下载不需要权限控制,建议 redirect 到 nginx 的静态文件夹。

    因为 flask 这种是阻塞的方式,如果只有一个线程,有人下载,你的服务将在下载全程不可用。
    loading
        2
    loading  
       Dec 4, 2015 via Android
    之前我问过一个相关的。
    http://v2ex.com/t/197801#reply4
    C0VN
        3
    C0VN  
       Dec 4, 2015
    确实下载文件不太应该用 web 框架来处理,直接交给 web server 当作静态文件处理。


    你说的不知道我理解对没有,例如就是返回数据 A.txt 文本文件内容,让浏览器以下载文件来处理,而不是直接给你在浏览器中打开了。

    需要在返回的 http header 中添加"Content-Disposition"

    你看一下这里 https://github.com/xavierskip/hupu_Album_Downloader/blob/master/web/index.py#L128
    ericls
        4
    ericls  
       Dec 5, 2015
    flask 可以配合 nginx 的内部路由 很好的实现文件下载功能
    About     Help     Advertise     Blog     API     FAQ     Solana     950 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 22:58 PVG 06:58 LAX 15:58 JFK 18:58
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86