फ़ाइल अपलोड करने के लिए, 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>
आउटपुट
इस कोड का परिणाम निम्न रूप है -
File: Choose file Upload
फ़ाइल अपलोड को संभालने के लिए यहां 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("\\", "/" ))