
查了 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; 1 loading 2015-12-04 18:19:31 +08:00 via Android 如果下载不需要权限控制,建议 redirect 到 nginx 的静态文件夹。 因为 flask 这种是阻塞的方式,如果只有一个线程,有人下载,你的服务将在下载全程不可用。 |
2 loading 2015-12-04 18:27:46 +08:00 via Android 之前我问过一个相关的。 http://v2ex.com/t/197801#reply4 |
3 C0VN 2015-12-04 21:48:00 +08:00 确实下载文件不太应该用 web 框架来处理,直接交给 web server 当作静态文件处理。 你说的不知道我理解对没有,例如就是返回数据 A.txt 文本文件内容,让浏览器以下载文件来处理,而不是直接给你在浏览器中打开了。 需要在返回的 http header 中添加"Content-Disposition" 你看一下这里 https://github.com/xavierskip/hupu_Album_Downloader/blob/master/web/index.py#L128 |
4 ericls 2015-12-05 02:59:55 +08:00 flask 可以配合 nginx 的内部路由 很好的实现文件下载功能 |