我有一个virtualenv运行python 3.4.0点子版本是pip 1.5.4我做pip安装电子邮件并得到错误:ImportError:在进程结束时没有名为'cStringIO'的模块(失败)如何获取电子邮件用于python 3.4.0的包
我正在尝试使用Flask创建一个Web应用程序,让用户上传文件并将其提供给其他用户.现在,我可以正确地将文件上传到upload_folder.但我似乎找不到让用户下载它的方法.
我将文件名的名称存储到数据库中.
我有一个服务于数据库对象的视图.我也可以删除它们.
@app.route('/dashboard', methods=['GET', 'POST'])
def dashboard():
problemes = Probleme.query.all()
if 'user' not in session:
return redirect(url_for('login'))
if request.method == 'POST':
delete = Probleme.query.filter_by(id=request.form['del_button']).first()
db.session.delete(delete)
db.session.commit()
return redirect(url_for('dashboard'))
return render_template('dashboard.html', problemes=problemes)
Run Code Online (Sandbox Code Playgroud)
在我的HTML中我有:
<td><a href="{{ url_for('download', filename=probleme.facture) }}">Facture</a></td>
Run Code Online (Sandbox Code Playgroud)
和下载视图:
@app.route('/uploads/<path:filename>', methods=['GET', 'POST'])
def download(filename):
return send_from_directory(directory=app.config['UPLOAD_FOLDER'], filename=filename)
Run Code Online (Sandbox Code Playgroud)
但它正在回归:
未找到
在服务器上找不到请求的URL.如果您手动输入了URL,请检查拼写,然后重试.
我只想将文件名链接到对象并让用户下载它(对于同一视图中的每个对象)
这是我的烧瓶服务器运行的代码:
from flask import Flask, make_response
import os
app = Flask(__name__)
@app.route("/")
def index():
return str(os.listdir("."))
@app.route("/<file_name>")
def getFile(file_name):
response = make_response()
response.headers["Content-Disposition"] = ""\
"attachment; filename=%s" % file_name
return response
if __name__ == "__main__":
app.debug = True
app.run("0.0.0.0", port = 6969)
Run Code Online (Sandbox Code Playgroud)
如果用户访问该站点,则会在目录中打印文件.但是,如果你去网站:6969/filename它应该下载文件.但是我做错了,因为文件大小总是0字节,下载的文件中没有数据.有什么想法吗.我尝试添加内容长度标头,但没有用.不知道它还能是什么.