从本地文件夹下载文件

时间:2013-10-21 14:46:51

标签: python flask

我正在尝试此代码

@app.route('/process/<user_id>/<file_format>/<download>', methods=['POST', 'GET'])
def download(user_id, file_format, download):
    if request.method == 'GET':

        response = urllib2.urlopen("http://"+socket.gethostname()+"app/documents/"+ download)
        html = response.read()
        return html

但我得到了:

URLError: <urlopen error [Errno -2] Name or service not known>

如果我只做response = urllib2.urlopen("app/documents/"+ download)

我明白了:

ValueError: unknown url type: app/documents/thereport_1712818a-39a3-436e-985c-84f1e8d43346.pdf

那么,基本上我如何从我的文档文件夹中获取文件?

3 个答案:

答案 0 :(得分:0)

从您的代码中我了解到您要下载位于您自己的计算机上的html文件。 第一:

response = urllib2.urlopen("http://"+socket.gethostname()+"app/documents/"+ download)

应该是

response = urllib2.urlopen("http://"+socket.gethostname()+"/app/documents/"+ download)

除非'app'是您的主机名的一部分(我认为不是)。

第二......确保你可以使用wget做同样的事情(这意味着你在本地安装了一个http服务器,它可以侦听端口80并可以提供所请求的文件):

wget <URL>

答案 1 :(得分:0)

from flask import Flask, redirect
app = Flask(__name__)

@app.route('/process/<user_id>/<file_format>/<download>', methods=['POST', 'GET'])
def download(user_id, file_format, download):
    if request.method == 'GET':
        return redirect("http://{0}/app/documents/{1}".format(request.host,download))

答案 2 :(得分:0)

@app.route('/process/<user_id>/<file_format>/<download>')
def download(user_id, file_format, download):
    return redirect(url_for('static', filename='documents/'+download))

这就是我想要的。