Python 文件夹和文件与Flask一起上载
我可以通过以下方式使用flask上传文件:Python 文件夹和文件与Flask一起上载,python,file-upload,flask,Python,File Upload,Flask,我可以通过以下方式使用flask上传文件: 标记用enctype=multipart/form data标记,并在该表单中放置一个 应用程序从请求对象上的文件字典访问该文件 使用文件的save()方法将文件永久保存在文件系统的某个位置 但我不知道如何上传文件夹或一些文件。我搜索了一下,找到了 然而,我仍然不知道如何上传文件夹和属于该文件夹的文件 你能告诉我怎么做吗 我正在处理的目录树: . ├── manage.py ├── templates │ ├── file_upload.html
标记用enctype=multipart/form data
标记,并在该表单中放置一个
save()
方法将文件永久保存在文件系统的某个位置我正在处理的目录树:
.
├── manage.py
├── templates
│ ├── file_upload.html
│ └── hello.html
└── uploads
├── BX6dKK7CUAAakzh.jpg
└── sample.txt
上传文件的源代码:
from flask import Flask,abort,render_template,request,redirect,url_for
from werkzeug import secure_filename
import os
app = Flask(__name__)
UPLOAD_FOLDER = './uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
@app.route('/')
def index():
return redirect(url_for('hello'))
@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name = None):
return render_template('hello.html',name=name)
@app.route('/upload/',methods = ['GET','POST'])
def upload_file():
if request.method =='POST':
file = request.files['file']
if file:
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'],filename))
return hello()
return render_template('file_upload.html')
if __name__ == '__main__':
app.run(debug = True)
从flask导入flask、中止、呈现模板、请求、重定向、url
从werkzeug导入安全文件名
导入操作系统
app=烧瓶(名称)
上传文件夹='。/上传'
app.config['UPLOAD\u FOLDER']=UPLOAD\u FOLDER
@应用程序路径(“/”)
def index():
返回重定向(url_表示('hello'))
@app.route(“/hello/”)
@app.route(“/hello/”)
def hello(name=None):
返回呈现模板('hello.html',name=name)
@app.route('/upload/',方法=['GET','POST'])
def upload_文件():
如果request.method==“POST”:
file=request.files['file']
如果文件:
filename=secure\u文件名(file.filename)
保存(os.path.join(app.config['UPLOAD\u FOLDER'],文件名))
返回hello()
返回渲染模板('file\u upload.html')
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app.run(debug=True)
文件上载模板(manage.py):
上载新文件
上载新文件
这里的问题是flask的app.config
不是相对的,而是绝对的。所以当你把:flask找不到此目录,返回
500
错误。
如果您将其更改为:然后上传您的文件并导航到/tmp/目录,您将看到它 您需要编辑到正确目录的路径,以便正确上载文件
file = request.files['file']
换成
file = request.files['file[]']
你读过吗?请记住,HTML表单的显示方式以及用户与表单的交互方式都取决于浏览器,浏览器从HTML中获得提示。Flask通过HTTP提供了一些抽象,但您仍然需要理解HTML才能很好地使用它。谢谢!它确实有用!现在,我明白了:我可以在Chrome上做,但其他人不行。如果你按照你的评论回答,我可以将其标记为回答我的评论实际上不是一个答案,但它似乎给你带来了足够的信息来帮助你自己解决问题,对吗?如果是这样,你应该写下自己的答案并接受。请将答案放在答案栏中。稍后,你可以接受自己的答案。也看到
UPLOAD_FOLDER = '/tmp'
file = request.files['file']
file = request.files['file[]']