เพื่ออัปโหลดไฟล์ HTML form ต้องมีแอตทริบิวต์ enctype ตั้งค่าเป็น multipart/form-data แท็ก input ที่มี type เป็น file จะสร้างปุ่ม "Browse"
ผลลัพธ์
ผลลัพธ์ของโค้ดนี้คือฟอร์มดังภาพ:

ตัวอย่างข้างต้นถูกปิดใช้งานโดยเจตนา เพื่อป้องกันการอัปโหลดไฟล์บนเซิร์ฟเวอร์ของเรา แต่คุณสามารถลองโค้ดข้างต้นกับเซิร์ฟเวอร์ของคุณเอง
นี่คือสคริปต์ save_file.py สำหรับจัดการอัปโหลดไฟล์:
#!/usr/bin/python
import cgi, os
import cgitb; cgitb.enable()
form = cgi.FieldStorage()
# Get filename here.
fileitem = form['filename']
# Test if the file was uploaded
if fileitem.filename:
# strip leading path from file name to avoid
# directory traversal attacks
fn = os.path.basename(fileitem.filename)
open('/tmp/' + fn, 'wb').write(fileitem.file.read())
message = 'The file "' + fn + '" was uploaded successfully'
else:
message = 'No file was uploaded'
print """
Content-Type: text/html\n
%s
""" % (message,)
ถ้ารันสคริปต์ข้างต้นบน Unix/Linux ต้องดูแลการแทนที่ file separator ดังนี้ มิฉะนั้นบน Windows เปิด() ควรทำงานได้ดี:
fn = os.path.basename(fileitem.filename.replace("\\", "/"))