Ako filtrovať nahrávanie súborov aplikácie Flask na základe veľkosti?

Nov 20, 2025Zanechajte správu

V oblasti vývoja webových aplikácií sa Flask vďaka svojej jednoduchosti a flexibilite stal populárnym mikrorámcom na vytváranie webových aplikácií. Jednou z bežných požiadaviek v mnohých aplikáciách Flask je spracovanie nahrávania súborov. Umožnenie používateľom nahrávať súbory bez náležitých obmedzení však môže viesť k rôznym problémom, ako je nadmerná spotreba serverového úložiska a potenciálne bezpečnostné riziká. V tomto blogu vás ako dodávateľ Filtering Flask prevediem procesom filtrovania nahrávaných súborov aplikácie Flask na základe veľkosti.

Pochopenie základov nahrávania súborov vo fľaši

Skôr než sa ponoríme do filtrovania veľkosti, stručne si zopakujme, ako funguje nahrávanie súborov vo Flasku. Flask poskytuje jednoduchý spôsob, ako zvládnuť nahrávanie súborov prostredníctvom nehorequest.filesobjekt. Keď používateľ odošle formulár so vstupným poľom súboru, k nahranému súboru sa dá pristupovať v aplikácii Flask.

Tu je jednoduchý príklad aplikácie Flask, ktorá akceptuje nahrávanie súborov:

z banky import Flask, žiadosť app = Flask(__name__) @app.route('/upload', methods=['POST']) def upload_file(): file = request.files['file'] if file: file.save('uploads/' + file.filename) return 'File = upload_filename' return 'No file = upload_file_ '__main__': app.run(debug=True)

V tomto kóde definujeme trasu/nahraťktorý prijíma požiadavky POST. Keď sa súbor nahrá, uloží sa donahrávanieadresár.

Clear glass Filtering FlaskLaboratory Clear Glass Filtering Flasks With Upper Tubulature

Prečo filtrovať odovzdané súbory podľa veľkosti?

Existuje niekoľko dôvodov, prečo by ste mohli chcieť filtrovať nahrávané súbory podľa veľkosti. Po prvé, serverové úložisko je obmedzený zdroj. Ak používateľom umožníte nahrávať extrémne veľké súbory, môžete rýchlo vyčerpať dostupný priestor vášho servera. Po druhé, nahrávanie veľkých súborov môže spôsobiť problémy s výkonom, najmä ak má váš server obmedzenú šírku pásma. Okrem toho sa používatelia so zlými úmyslami môžu pokúsiť nahrať veľmi veľké súbory ako forma útoku odmietnutia služby.

Implementácia filtrovania veľkosti v banke

Na implementáciu filtrovania veľkosti v aplikácii Flask musíme pred uložením skontrolovať veľkosť nahraného súboru. Banka neposkytuje priamy spôsob, ako získať veľkosť súboru zrequest.filesobjekt, ale môžeme použiťvymodul v Pythone, aby ste to dosiahli.

Tu je aktualizovaná verzia predchádzajúceho príkladu s filtrovaním veľkosti:

import OS z banky import Flask, žiadosť app = Flask(__name__) MAX_FILE_SIZE = 1024 * 1024 # 1 MB @app.route('/upload', methods=['POST']) def upload_file(): file = request.files['file'] if file: ostell(0) file: file.seek(0.) file. file.seek(0) if file_size > MAX_FILE_SIZE: return 'Veľkosť súboru prekračuje limit' file.save('uploads/' + file.filename) return 'Súbor úspešne odovzdaný' return 'Nenahral sa žiadny súbor' ak __name__ == '__main__': app.run(debug=True)

V tomto kóde najprv definujeme maximálnu veľkosť súboruMAX_FILE_SIZE(v tomto prípade 1 MB). Pri nahrávaní súboru používamehľadaťapovedaťmetódy na získanie veľkosti súboru. Ak veľkosť súboru prekročí maximálny limit, vrátime chybové hlásenie. V opačnom prípade súbor uložíme ako obvykle.

Použitie banky - WTF na overenie formulára

Flask - WTF je rozšírenie pre Flask, ktoré zjednodušuje manipuláciu s formulármi a ich validáciu. Môžeme ho použiť na vykonanie filtrovania veľkosti elegantnejším spôsobom.

Najprv nainštalujte Flask - WTF:

pip install flask - wtf

Tu je príklad použitia Flask - WTF na filtrovanie veľkosti:

from flask import Flask, render_template, request from flask_wtf import FlaskForm from wtforms import FileField from wtforms.validators import DataRequired import os app = Flask(__name__) app.config['SECRET_KEY'] = 'your_secret_key' = MAX_12MBSIZE class' #4 *FILE_SIZE class UploadForm(FlaskForm): file = FileField('Upload File', validators=[DataRequired()]) @app.route('/upload', Methods=['GET', 'POST']) def upload_file(): form = UploadForm() if form.validate_on_submit(): súbor s údajmi SE0 o súbore_form.ENDse.file. = file.tell() file.seek(0) ak veľkosť_súboru > MAX_FILE_SIZE: return 'Veľkosť súboru presahuje limit' file.save('uploads/' + file.filename) return 'Súbor úspešne nahraný' return render_template('upload.html', form=form) if __name_Tr_main_e =()'dename_Tr_main == )'dename_Tr_main

V tomto príklade vytvoríme triedu formuláraUploadFormpomocou Flask - WTF. Formulár má aFileFieldpre nahrávanie súborov. Po odoslaní formulára vykonáme kontrolu veľkosti ako predtým.

Úvahy o rôznych prostrediach

Pri implementácii filtrovania veľkosti je dôležité zvážiť rôzne prostredia, v ktorých môže bežať vaša aplikácia Flask. Napríklad vo vývojovom prostredí možno budete chcieť nastaviť relatívne nízku maximálnu veľkosť súboru na testovacie účely. V produkčnom prostredí možno budete musieť upraviť limit na základe zdrojov vášho servera a povahy vašej aplikácie.

Naše produkty na filtračné banky

Ako dodávateľ filtračných baniek ponúkame široký sortiment vysokokvalitných filtračných baniek pre rôzne laboratórne aplikácie. nášLaboratórne číre sklenené filtračné banky s hornou trubicousú vyrobené z číreho skla, čo umožňuje ľahké pozorovanie procesu filtrovania. Sú navrhnuté s hornou trubicou pre efektívnu filtráciu.

Ďalším obľúbeným produktom je nášLaboratórne sklenené Erlenmeyerove filtračné banky kužeľového tvaru s hornou trubicou. Kónický tvar poskytuje lepšiu stabilitu a je vhodný pre rôzne filtračné úlohy.

Kontaktujte nás kvôli obstarávaniu

Ak máte záujem o naše filtračné banky alebo máte akékoľvek otázky týkajúce sa filtrovania veľkosti v aplikáciách Banky, pozývame vás, aby ste nás kontaktovali kvôli diskusiám o obstarávaní. Náš tím odborníkov je pripravený pomôcť vám nájsť tie správne produkty pre vaše potreby.

Referencie

  • Dokumentácia banky
  • Pythonvymodulová dokumentácia
  • Banka - dokumentácia WTF