How can I restrict uploads to Flask to only permit .csv
files to be uploaded? I have been trying but can't do it.
So far I have managed to block ALL FILES or upload all of them. I need upload only .csv
files.
This is what I have tried:
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')
return redirect(request.url)
return render_template('home.html')
And this is the 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>