2016-10-27 5 views
0

Я пытаюсь работать пример загрузки файла на этом сайте https://www.tutorialspoint.com/python/python_cgi_programming.htmзагрузить файл с помощью Python с CGI

Я написал файл .py. Когда я запускаю этот код, возникает следующая ошибка;

Traceback (most recent call last): 
    File "C:/xampp/cgi-bin/file_upload.py", line 9, in <module> 
    fileitem = form['filename'] 
    File "C:\Python3\lib\cgi.py", line 604, in __getitem__ 
    raise KeyError(key) 
KeyError: 'filename' 

И мой файл .py ниже:

#!C:/Python3/python.exe 

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('F:/gelen/' + 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> 
    <form enctype="multipart/form-data" 
        action="/cgi-bin/file_upload.py" method="post"> 
    <p>File: <input type="file" name="filename" /></p> 
    <p><input type="submit" value="Upload" /></p> 
    </form> 
    <p>%s</p> 
</body> 
</html> 
""" % (message,)) 

Как я могу решить эту проблему и почему программа не видит имя файла я не понимаю

ответ

0

Если каталог, в котором сценарий запущен is/path/to/dir, тогда каталог/path/to/dir/files должен существовать. Если это не так, это не сработает. , а также для загрузки файла HTML-форма должна иметь атрибут enctype, установленный для multipart/form-data.

Смежные вопросы