Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python CGI 프로그래밍을 사용하여 파일 업로드를 수행하는 방법은 무엇입니까?


파일을 업로드하려면 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>

출력

이 코드의 결과는 다음 형식입니다. -

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,)

위의 스크립트를 Unix/Linux에서 실행하는 경우 다음과 같이 파일 구분 기호를 교체해야 합니다. 그렇지 않으면 Windows 시스템에서 위의 open() 문이 제대로 작동합니다.

fn = os.path.basename(fileitem.filename.replace("\\", "/" ))