仅选择要上传到Flask的.csv文件类型

问题描述 投票:-1回答:4

如何限制上传到Flask的文件只允许上传.csv文件?我一直在尝试但无法做到。

到目前为止,我已经成功阻止了所有文件或上传了所有文件。我只需要上传.csv文件。

这是我尝试过的:

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>
python file csv uploading flask-uploads
4个回答
0
投票

这样的情况可能会解决问题:

if filename.rsplit('.', 1)[1].lower()=='csv':
# >>> process file here <<<

编辑:在此期间,我看到您添加了更多代码。您有一个名为allowed_file的函数。但是您正在调用allowed_file s

是您出问题的地方还是仅仅是错字?


-1
投票

您可以查看这篇文章可能会有所帮助:D

https://flask.palletsprojects.com/en/1.1.x/patterns/fileuploads/

有一个示例,允许您指定允许的扩展名

ALLOWED_EXTENSIONS = {'txt','pdf','png','jpg','jpeg','gif'}

因此,请尝试使用一种输入形式将其替换为csv


0
投票

这是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>

-1
投票

您可以查看这篇文章可能会有所帮助:D

https://flask.palletsprojects.com/en/1.1.x/patterns/fileuploads/

有一个示例,允许您指定允许的扩展名

ALLOWED_EXTENSIONS = {'txt','pdf','png','jpg','jpeg','gif'}

因此,请尝试使用一种输入形式将其替换为csv

© www.soinside.com 2019 - 2024. All rights reserved.