Inom webbutvecklingsområdet har Flask vuxit fram som ett populärt mikroramverk för att bygga webbapplikationer på grund av dess enkelhet och flexibilitet. Ett vanligt krav i många Flask-applikationer är att hantera filuppladdningar. Men att tillåta användare att ladda upp filer utan ordentliga begränsningar kan leda till olika problem, såsom överdriven serverlagringsförbrukning och potentiella säkerhetsrisker. I den här bloggen, som en Filtering Flask-leverantör, kommer jag att guida dig genom processen att filtrera Flask-applikationens filuppladdningar baserat på storlek.
Förstå grunderna för filuppladdningar i Flask
Innan vi fördjupar oss i storleksfiltrering, låt oss kort se över hur filuppladdningar fungerar i Flask. Flask ger ett enkelt sätt att hantera filuppladdningar genom sinrequest.filerobjekt. När en användare skickar in ett formulär med ett filinmatningsfält kan den uppladdade filen nås i Flask-applikationen.
Här är ett enkelt exempel på en Flask-applikation som accepterar filuppladdningar:
från kolvimport Flask, begär app = Flask(__name__) @app.route('/upload', methods=['POST']) def upload_file(): file = request.files['file'] if file: file.save('uploads/' + file.filename) return 'File uploaded framgångsrikt =' return '__En fil uppladdad i__': app.run(debug=True)
I den här koden definierar vi en rutt/ladda uppsom accepterar POST-förfrågningar. När en fil laddas upp sparas den iuppladdningarkatalog.


Varför filtrera filuppladdningar baserat på storlek?
Det finns flera anledningar till varför du kanske vill filtrera filuppladdningar baserat på storlek. För det första är serverlagring en ändlig resurs. Att tillåta användare att ladda upp extremt stora filer kan snabbt ta ut serverns tillgängliga utrymme. För det andra kan stora filuppladdningar orsaka prestandaproblem, särskilt om din server har begränsad bandbredd. Dessutom kan illvilliga användare försöka ladda upp mycket stora filer som en form av överbelastningsattack.
Implementera storleksfiltrering i kolv
För att implementera storleksfiltrering i en Flask-applikation måste vi kontrollera storleken på den uppladdade filen innan vi sparar den. Flask ger inte ett direkt sätt att få filstorleken frånrequest.filerobjekt, men vi kan användadumodul i Python för att uppnå detta.
Här är en uppdaterad version av det tidigare exemplet med storleksfiltrering:
importera os från kolv importera kolv, begär app = kolv(__namn__) MAX_FILE_SIZE = 1024 * 1024 # 1MB @app.route('/upload', methods=['POST']) def upload_file(): file = request.files['file'] if file: file.seek(0, file: file.seek_END) file.seek(0, file.seek(0) if file_size > MAX_FILE_SIZE: return 'Filstorleken överskrider gränsen' file.save('uploads/' + file.filename) return 'Filen laddades upp framgångsrikt' return 'Ingen fil uppladdad' om __name__ == '__main__': app.run(debug=True)
I den här koden definierar vi först en maximal filstorlekMAX_FILE_SIZE(i det här fallet 1 MB). När en fil laddas upp använder visökaochberättametoder för att få storleken på filen. Om filstorleken överstiger maxgränsen returnerar vi ett felmeddelande. Annars sparar vi filen som vanligt.
Använda Flask - WTF för formulärvalidering
Flask - WTF är ett tillägg för Flask som förenklar formulärhantering och validering. Vi kan använda den för att utföra storleksfiltrering på ett mer elegant sätt.
Installera först Flask - WTF:
pip installera kolv - wtf
Här är ett exempel på hur man använder Flask - WTF för storleksfiltrering:
från flask import Flask, render_template, begäran från flask_wtf import FlaskForm från wtforms import FileField från wtforms.validators import DataRequired import os app = Flask(__name__) app.config['SECRET_KEY'] = 'din_hemliga_nyckel' * MAX_FILE_4SIZE = 1002244 #1 klass UploadForm(FlaskForm): file = FileField('Upload File', validators=[DataRequired()]) @app.route('/upload', methods=['GET', 'POST']) def upload_file(): form = UploadForm() if form.validate_on_submit(): file = form.SEEK_END, file = form.SEEK_END, file. file.tell() file.seek(0) if file_size > MAX_FILE_SIZE: return 'File size överskrider gränsen' file.save('uploads/' + file.filename) return 'File uploaded successfully' return render_template('upload.html', form=form) if __name__ == 'app.ruin__de:bug'
I det här exemplet skapar vi en formulärklassUploadFormanvänder Flask - WTF. Blanketten har enFileFieldför filuppladdningar. När blanketten skickas in utför vi storlekskontrollen som tidigare.
Överväganden för olika miljöer
När du implementerar storleksfiltrering är det viktigt att ta hänsyn till de olika miljöer där din Flask-applikation kan köras. Till exempel, i en utvecklingsmiljö, kanske du vill ställa in en relativt låg maximal filstorlek för teständamål. I en produktionsmiljö kan du behöva justera gränsen baserat på din servers resurser och typen av din applikation.
Våra produkter för filtreringskolv
Som leverantör av filterkolvar erbjuder vi ett brett utbud av högkvalitativa filterkolvar för olika laboratorieapplikationer. VårLaboratoriefilterflaskor av klart glas med övre tubulaturär gjorda av klart glas, vilket möjliggör enkel observation av filtreringsprocessen. De är designade med en övre tubulatur för effektiv filtrering.
En annan populär produkt är vårLaboratorieglas konisk form Erlenmeyer filterkolvar med övre tubulering. Den koniska formen ger bättre stabilitet och är lämplig för en mängd olika filtreringsuppgifter.
Kontakta oss för upphandling
Om du är intresserad av våra filtreringsflaskor eller har några frågor om storleksfiltrering i Flask-applikationer, inbjuder vi dig att kontakta oss för upphandlingsdiskussioner. Vårt team av experter är redo att hjälpa dig att hitta rätt produkter för dina behov.
Referenser
- Kolvdokumentation
- Python
dumoduldokumentation - Flask - WTF-dokumentation
