首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从静态外部的dirs中用烧瓶服务文件

从静态外部的dirs中用烧瓶服务文件
EN

Stack Overflow用户
提问于 2017-08-11 02:19:05
回答 1查看 1.9K关注 0票数 1

我提供上传/下载服务只是为了好玩,但我很难为静态目录之外的文件提供服务,这会导致一个问题,因为任何人都可以访问www.mysite.com/static并查看内容。

这就是我到目前为止所拥有的。请原谅我的网络存储的丑陋路径:)

代码语言:javascript
复制
if not os.path.exists('\\ATTILA\\Development\\GIT\\MyCloud\\static\\'+ session['username']):
        os.makedirs('\\\\ATTILA\\Development\\GIT\\MyCloud\\static\\'+ session['username'])

    #Download links for all files
    pathing = []
    my_path = '\\\\ATTILA\\Development\\GIT\\MyCloud\\static\\'+ session['username'] + '\\'
    os.chdir('\\\\ATTILA\\Development\\GIT\\MyCloud\\static\\'+ session['username'])
    for myfile in glob.glob('*'):
        downs = my_path + myfile
        pathing.append(tuple([downs, myfile]))

在我的模板中我有一个简单的for循环

代码语言:javascript
复制
{% for myfile, name in pathing %}
    <a href='{{ myfile }}' download>{{ name }}</a><br>
{% endfor %}

所以我的观点是:

就目前情况而言,我的文件是可下载的,但是如果我将下载的文件路径更改为“静态”之外的文件夹,那么我将得到404个指向URL +文件路径的错误,比如www.mysite.com\ATTILLA\Development\some_other_folder,有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2017-08-11 06:06:22

如果您想将您的应用程序放在生产中,您需要使用像nginx这样的解决方案来为您提供静态文件。通常在开发阶段,Flask使用常规的静态文件(css、js和其他) self。这很正常。如果您想隐藏一些私有数据或上传的文件,您需要使用如下所示:

代码语言:javascript
复制
from flask import Flask, make_response
...
@app.route('/file_downloads/<filename>')
def file_downloads(filename):
    headers = {"Content-Disposition": "attachment; filename=%s" % filename}
    with open('../tmp/you_private_file.zip', 'r') as f:
        body = f.read()
    return  make_response((body, headers))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45625960

复制
相关文章

相似问题

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