ในการอัปโหลดไฟล์ แบบฟอร์ม HTML ต้องมีแอตทริบิวต์ enctype ที่ตั้งค่าเป็น multipart/form-data . แท็กอินพุตที่มีประเภทไฟล์จะสร้างปุ่ม "เรียกดู"
<html> <body> <form enctype = "multipart/form-data" action = "save_file.py" method = "post"> <p>File: <input type = "file" name = "filename" /></p> <p><input type = "submit" value = "Upload" /></p> </form> </body> </html>
ผลลัพธ์
ผลลัพธ์ของรหัสนี้อยู่ในรูปแบบต่อไปนี้ −
ตัวอย่างข้างต้นถูกปิดใช้งานโดยเจตนาเพื่อบันทึกบุคคลที่อัปโหลดไฟล์บนเซิร์ฟเวอร์ของเรา แต่คุณสามารถลองใช้โค้ดด้านบนกับเซิร์ฟเวอร์ของคุณได้
นี่คือสคริปต์ 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 <html> <body> <p>%s</p> </body> </html> """ % (message,)
หากคุณเรียกใช้สคริปต์ด้านบนบน Unix/Linux คุณต้องดูแลการแทนที่ตัวคั่นไฟล์ดังนี้ มิฉะนั้นในเครื่อง windows ของคุณด้านบน open() คำสั่งจะทำงานได้ดี
fn = os.path.basename(fileitem.filename.replace("\\", "/" ))