我一直在尝试,但无法做到。我真的是新来的烧瓶。
我已经尝试过,但是我只能阻止所有文件或上传所有文件...我只需要上传CSV文件..
我一直在尝试,但无法做到。我真的是使用flask的。。
这样的情况可能会解决问题:
if filename.rsplit('.', 1)[1].lower()=='csv':
# >>> process file here <<<
这是我尝试过的。...
UPLOAD_FOLDER = "/Users/osito/Desktop/efisys-git/efisys/Webb_App/static/archivos"
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
ALLOWED_EXTENSIONS = set(['csv'])
def allowed_file(filename):
return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
@app.route("/carga", methods=["GET", "POST"])
def carga():
if request.method == "POST":
archivo = request.form['archivo']
if archivo.filename == "":
flash(u"NO selected file", 'error')
if not allowed_files(archivo.filename):
flash(u'only csv files', 'error')
else:
# filename = secure_filename(archivo.filename)
# archivo.save(os.path.join(app.config["FILE_UPLOADS"], archivo.filename))
# print(archivo.filename, type(archivo), archivo.filename.split('.')[0])
# success_message = "Archivo uploaded: ", archivo.filename
# flash(success_message)
# print("fil saved")
if request.method == 'POST':
archivo = request.form['archivo']
error = None
if error is not None:
flash(error)
else:
db = get_db()
db.execute('INSERT INTO archivos_csv (archivo) VALUES (?)'(archivo))
db.commit()
return redirect(url_for('carga'))
return redirect(request.url)
return render_template('carga.html')
这是HTML ..
<input id="upload" type ="file" name = "file" onchange="readURL();" />
<form action="/carga" method="POST" enctype="multipart/form-data">
<h2>Suba Aquí su Archivo CSV </h2>
<div class="form-group area">
<input type="hidden" class="form-control" name="archivo" id="archivo">
</div>
<button type="submit" name="archivo" class="btn btn primary">Subir</button>
</form>
您可以查看这篇文章可能会有所帮助:D
有一个示例,允许您指定允许的扩展名
ALLOWED_EXTENSIONS = {'txt','pdf','png','jpg','jpeg','gif'}
因此,请尝试使用一种输入形式将其替换为csv