กระติกน้ำ - การอัปโหลดไฟล์
การจัดการการอัปโหลดไฟล์ใน Flask นั้นง่ายมาก ต้องใช้รูปแบบ HTML ที่มีแอตทริบิวต์ enctype ตั้งค่าเป็น "multipart / form-data" โดยโพสต์ไฟล์ไปยัง URL ตัวจัดการ URL ดึงไฟล์จากrequest.files[] วัตถุและบันทึกไปยังตำแหน่งที่ต้องการ
ไฟล์ที่อัปโหลดแต่ละไฟล์จะถูกบันทึกไว้ในตำแหน่งชั่วคราวบนเซิร์ฟเวอร์ก่อนที่จะบันทึกไปยังตำแหน่งสูงสุด ชื่อของไฟล์ปลายทางสามารถฮาร์ดโค้ดหรือหาได้จากคุณสมบัติชื่อไฟล์ของrequest.files[file]วัตถุ. อย่างไรก็ตามขอแนะนำให้รับเวอร์ชันที่ปลอดภัยโดยใช้ไฟล์secure_filename() ฟังก์ชัน
เป็นไปได้ที่จะกำหนดเส้นทางของโฟลเดอร์อัพโหลดเริ่มต้นและขนาดสูงสุดของไฟล์ที่อัพโหลดในการตั้งค่าคอนฟิกของวัตถุ Flask
app.config ['UPLOAD_FOLDER'] | กำหนดเส้นทางสำหรับโฟลเดอร์อัปโหลด |
app.config ['MAX_CONTENT_PATH'] | ระบุขนาดสูงสุดของไฟล์ที่จะอัปโหลด - เป็นไบต์ |
รหัสต่อไปนี้มี ‘/upload’ กฎ URL ที่แสดง ‘upload.html’ จากโฟลเดอร์เทมเพลตและ ‘/upload-file’ กฎ URL ที่เรียก uploader() ฟังก์ชั่นการจัดการกระบวนการอัปโหลด
‘upload.html’ มีปุ่มตัวเลือกไฟล์และปุ่มส่ง
<html>
<body>
<form action = "http://localhost:5000/uploader" method = "POST"
enctype = "multipart/form-data">
<input type = "file" name = "file" />
<input type = "submit"/>
</form>
</body>
</html>
คุณจะเห็นหน้าจอดังภาพด้านล่าง
คลิก Submitหลังจากเลือกไฟล์ วิธีการโพสต์ของแบบฟอร์มเรียกใช้‘/upload_file’URL ฟังก์ชันพื้นฐานuploader() ทำการบันทึก
ต่อไปนี้เป็นรหัส Python ของแอปพลิเคชัน Flask
from flask import Flask, render_template, request
from werkzeug import secure_filename
app = Flask(__name__)
@app.route('/upload')
def upload_file():
return render_template('upload.html')
@app.route('/uploader', methods = ['GET', 'POST'])
def upload_file():
if request.method == 'POST':
f = request.files['file']
f.save(secure_filename(f.filename))
return 'file uploaded successfully'
if __name__ == '__main__':
app.run(debug = True)