फाइल अपलोड करने के लिए, HTML फॉर्म में `enctype` एट्रिब्यूट `multipart/form-data` पर सेट होना चाहिए। `file` टाइप वाला इनपुट टैग "ब्राउज़" बटन बनाता है।
उदाहरण
<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()
# यहां फाइलनाम प्राप्त करें
fileitem = form['filename']
# टेस्ट करें कि फाइल अपलोड हुई या नहीं
if fileitem.filename:
# डायरेक्टरी ट्रैवर्सल अटैक्स से बचने के लिए फाइल नाम से लीडिंग पाथ स्ट्रिप करें
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
%s
""" % (message,)
यदि आप उपरोक्त स्क्रिप्ट को Unix/Linux पर चलाते हैं, तो आपको फाइल सेपरेटर बदलने का ध्यान रखना होगा, अन्यथा आपकी विंडोज मशीन पर उपरोक्त `open()` स्टेटमेंट ठीक काम करना चाहिए।
fn = os.path.basename(fileitem.filename.replace("\\", "/"))