कोई फ़ाइल अपलोड करने के लिए, HTML प्रपत्र में enctype विशेषता मल्टीपार्ट/फ़ॉर्म-डेटा पर सेट होनी चाहिए . फ़ाइल प्रकार वाला इनपुट टैग "ब्राउज़ करें" बटन बनाता है।
<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,)
यदि आप उपरोक्त स्क्रिप्ट को यूनिक्स/लिनक्स पर चलाते हैं, तो आपको फ़ाइल विभाजक को निम्नानुसार बदलने का ध्यान रखना होगा, अन्यथा आपके विंडोज़ मशीन पर open() कथन के ऊपर ठीक काम करना चाहिए।
fn = os.path.basename(fileitem.filename.replace("\\", "/" ))