Latest web development tutorials

파이썬 CGI 프로그램

CGI는 무엇인가

다음과 같이 현재 NCSA에 의해 유지 CGI는 NCSA의 CGI 정의된다 :

CGI (공통 게이트웨이 인터페이스)와 같은 서버에서 실행되는 프로그램이며, 공통 게이트웨이 인터페이스 : HTTP 서버와 같은 HTML 페이지를 제공하는 클라이언트 인터페이스.


웹 브라우징

더 나은 CGI 작동 방식을 이해하기 위해, 우리는 프로세스의 웹 페이지 또는 URL에 링크를 클릭 할 수 있습니다 :

  • 하나는 HTTP 웹 서버에 URL에 액세스하여 연결하는 브라우저를 사용합니다.
  • 도 2를 참조하면, 웹 서버는, 그렇지 않으면 에러 메시지를 반환 요청 메시지는 URL을 해석하고 파일의 내용을 리턴 있다면,이 경우 서버에 액세스 한 파일을보고한다 수신한다.
  • 도 3을 참조하면, 브라우저는 서버로부터 정보를 수신하고, 수신 된 파일 또는 에러 메시지를 표시한다.

CGI 프로그램은 파이썬 스크립트, PERL 스크립트, 쉘 스크립트, C 또는 C ++ 프로그램이 될 수 있습니다.


CGI 차트

cgiarch


웹 서버 구성 및 지원

당신이 CGI 프로그래밍을 수행하기 전에 웹 서버가 CGI 및 CGI 처리기를 지원하도록 구성되어 있는지 확인하십시오.

아파치는 CGI 구성을 지원합니다 :

는 CGI 디렉토리를 설정합니다 :

ScriptAlias /cgi-bin/ /var/www/cgi-bin/

CGI 프로그램을 실행하는 모든 HTTP 서버에서 사전 구성된 디렉토리에 저장된다. 이 디렉토리는 CGI 디렉토리라고하며, 규칙에 따라, 그것은는 / var / www /에서의 cgi-bin 디렉토리 지정됩니다.

CGI 파일 확장자가 .cgi는, 파이썬은 또한 평 확장을 사용할 수 있습니다.

기본적으로 CGI-bin 디렉토리를 실행하는 리눅스 서버 구성은 / var / www가있다.

당신이 CGI 스크립트를 실행하려면 다른 디렉토리를 지정하려면 다음과 같이 당신은 httpd.conf 구성 파일을 수정할 수 있습니다 :

<Directory "/var/www/cgi-bin">
   AllowOverride None
   Options +ExecCGI
   Order allow,deny
   Allow from all
</Directory>

평 접미사 AddHandler에 추가, 그래서 우리는 최종 평 파이썬 스크립트 파일에 액세스 할 수 있습니다 :

AddHandler cgi-script .cgi .pl .py

첫 번째 CGI 프로그램

우리는 hello.py라는 첫 번째 CGI 프로그램을 작성하기 위해 파이썬을 사용하여 다음과 같이 파일 인 / var / www /에서의 cgi-bin 디렉토리에 있습니다 :

#!/usr/bin/python
# -*- coding: UTF-8 -*-

print "Content-type:text/html"
print                               # 空行,告诉服务器结束头部
print '<html>'
print '<head>'
print '<meta charset="utf-8">'
print '<title>Hello Word - 我的第一个 CGI 程序!</title>'
print '</head>'
print '<body>'
print '<h2>Hello Word! 我是来自本教程的第一CGI程序</h2>'
print '</body>'
print '</html>'

당신은 파일 수정 hello.py를 저장 한 후, 755에 파일 권한을 수정 :

chmod 755 hello.py 

다음과 같이 위의 프로그램이있는 결과를 액세스 할 수있는 브라우저에 표시됩니다 :

브라우저 종류에 보내고 "text / html과"같은 내용을 표시하기 위해 브라우저를 말해 다음 hello.py이 스크립트는 간단한 파이썬 스크립트, 제 1 출력 라인 "text / html과 콘텐츠 형식"의 스크립트입니다.

빈 줄을 인쇄 출력은 헤더 정보의 서버 종료를 알리는 데 사용됩니다.


HTTP 헤더

hello.py의 파일 내용 : HTTP 헤더 부분은 "콘텐츠 타입 텍스트 / HTML"은, 그것은 브라우저 파일 지시 브라우저 컨텐트 유형으로 전송 될 것이다.

다음과 같이 HTTP 헤더 형식은 다음과 같습니다

HTTP 字段名: 字段内容

예를 들면 :

Content-type: text/html

다음 표는 HTTP 헤더 CGI 프로그램의 정보가 종종 사용된다 설명 :

머리 기술
콘텐츠 형식 : 상기 정보 요구에 상응하는 MIME 엔티티. 예를 들어 콘텐츠 유형 : 텍스트 / html로
만료 날짜 : 응답 일시 만료
위치 : URL 새로운 리소스의 요청 또는 식별을 완료되지 않은 위치 URL 요청에받는 리디렉션
마지막으로 수정 된 날짜 : 요청 된 자원이 마지막으로 수정
콘텐츠 길이 : N 콘텐츠 길이 요청
설정 - 쿠키 : 문자열 HTTP 쿠키 설정

CGI 환경 변수

모든 CGI 프로그램은 CGI 프로그램에 중요한 역할을 다음과 같은 환경 변수를 받았다 :

변수 이름 기술
CONTENT_TYPE 이 값을 나타내는 정보 전송의 MIME 타입에 대한 환경 변수있다. 현재, 환경 변수는 일반적으로 CONTENT_TYPE 있습니다 : 응용 프로그램 / x-www-form-urlencoded를, 그는 말했다 HTML 양식의 데이터.
CONTENT_LENGTH 전송 모드 서버와 CGI 프로그램 정보, POST 경우 경우에도 환경 변수 STDIN 입력 표준에서 유효한 데이터를 읽을 수있는 바이트의 수. 입력 데이터를 판독이 환경 변수는 사용되어야한다.
HTTP_COOKIE 클라이언트 내에서 COOKIE 내용.
HTTP_USER_AGENT 정보를 제공하는 것은 클라이언트 브라우저 또는 다른 소유 데이터의 버전 번호를 포함한다.
PATH_INFO 이 환경 변수의 값은 즉시 추가적인 경로 정보 후 CGI 프로그램의 이름을 나타낸다. 그것은 종종 인수 CGI 프로그램으로 나타납니다.
QUERY_STRING 전송 모드 서버와 CGI 프로그램 정보 인 경우 정보가 전달 된 경우에도 이러한 환경 변수의 값을 얻는다. 이 정보는 물음표 '?'세퍼레이터 가운데 둘은 CGI 프로그램의 이름 따른다.
REMOTE_ADDR 이 환경 변수의 값은, 클라이언트의 IP 어드레스는, 예를위한 요구를, 상기 192.168.1.67를 보낸다. 이 값은 항상 존재한다. 그리고 웹 서버의 고유 식별자에 웹 클라이언트가 상이한 웹 클라이언트를 구별하는 CGI 프로그램에 사용될 수 제공 할 필요가있다.
REMOTE_HOST 이 환경 변수의 값은 CGI의 요청 클라이언트의 호스트 이름을 포함한다. 당신이 확인하지 않는 경우,이 환경 변수를 정의 할 필요가 없습니다.
REQUEST_METHOD 이 스크립트라는 방법을 제공한다. HTTP / 1.0 프로토콜 스크립트에만 GET과 POST 의미.
SCRIPT_FILENAME CGI 스크립트의 전체 경로
SCRIPT_NAME CGI 스크립트의 이름
SERVER_NAME 이것은 당신의 웹 서버의 호스트 이름, 별명 또는 IP 주소입니다.
SERVER_SOFTWARE 이 환경 변수의 값은 HTTP 서버의 전화 CGI 프로그램 이름 및 버전 번호를 포함한다. 예를 들어, 아파치 / 2.2.14 (유닉스)의 위의 값

다음은 간단한 CGI 스크립트 출력 CGI 환경 변수입니다 :

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# filename:test.py

import os

print "Content-type: text/html"
print
print "<meta charset=\"utf-8\">"
print "<b>环境变量</b><br>";
print "<ul>"
for key in os.environ.keys():
    print "<li><span style='color:green'>%30s </span> : %s </li>" % (key,os.environ[key])
print "</ul>"

다음과 같이 위의 점 test.py를 저장하고 755에 파일 권한을 수정, 실행 결과는 다음과 같습니다


GET과 POST 방법

서버에 브라우저 클라이언트는 방법은 GET과 POST 방식 모두있는 두 가지 방법으로 정보를 제공합니다.

데이터 전송의 GET 메소드를 사용하여

서버에 상기 인코딩 된 사용자 정보를 전송하는 방법을 얻는, 상기 데이터 정보는 다음과 같이 나눌 수 페이지 요청의 URL에 포함 된 "?"

http://www.test.com/cgi-bin/hello.py?key1=value1&key2=value2
다른 의견의 일부에 대한 요청을 GET :
  • GET 요청은 캐시 할 수 있습니다
  • GET 요청은 브라우저 기록에 남아
  • 요청 북마크 할 수 있습니다 GET
  • 민감한 데이터를 처리 할 때 요청이 사용되어서는 안 GET
  • GET 요청은 길이 제한이
  • 요청은 데이터를 검색하는 데 사용되어야 GET

단순 URL의 예 : 방법을 GET

다음은 프로그램을 hello_get.py하는 두 개의 매개 변수를 전송하는 GET 메소드를 사용하여 간단한 URL입니다 :

/cgi-bin/test.py?name=本教程&url=http://www.w3big.com

코드 hello_get.py 파일 :

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# filename:test.py

# CGI处理模块
import cgi, cgitb 

# 创建 FieldStorage 的实例化
form = cgi.FieldStorage() 

# 获取数据
site_name = form.getvalue('name')
site_url  = form.getvalue('url')

print "Content-type:text/html"
print
print "<html>"
print "<head>"
print "<meta charset=\"utf-8\">"
print "<title>本教程 CGI 测试实例</title>"
print "</head>"
print "<body>"
print "<h2>%s官网:%s</h2>" % (site_name, site_url)
print "</body>"
print "</html>"

당신은 파일 수정 hello_get.py을 저장 한 후, 755에 파일 권한을 수정 :

chmod 755 hello_get.py 

브라우저 출력을 요청합니다

간단한 형태의 예 : 방법을 GET

다음 다음은 두 가지가 HTML 폼 통해 GET 방법을 사용하여 서버에 데이터를 송신하고, 동일한 서버 스크립트 hello_get.py 파일을 제출 hello_get.html 코드 :

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>
<form action="/cgi-bin/hello_get.py" method="get">
站点名称: <input type="text" name="name">  <br />

站点 URL: <input type="text" name="url" />
<input type="submit" value="提交" />
</form>
</body>
</html>

기본적으로 만 스크립트 파일을 저장할 수있는 CGI-bin 디렉토리, 우리는 테스트 디렉토리하에 권한 755로 저장 hello_get.html 파일을 수정한다 :

chmod 755 hello_get.html

다음과 같이 GIF 프리젠 테이션은 다음과 같습니다

데이터를 전달하기 위해 POST 메서드를 사용하여

서버가 더 안전하고 신뢰할하는 POST 메소드를 사용하여 사용자 암호 데이터를 전송하기 위해 POST를 사용할 필요가 민감한 정보와 같은 데이터를 전달한다.

다음은 또한 브라우저가 제출 POST 폼 데이터를 처리 할 수도있다 hello_get.py :

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# CGI处理模块
import cgi, cgitb 

# 创建 FieldStorage 的实例化
form = cgi.FieldStorage() 

# 获取数据
site_name = form.getvalue('name')
site_url  = form.getvalue('url')

print "Content-type:text/html"
print
print "<html>"
print "<head>"
print "<meta charset=\"utf-8\">"
print "<title>本教程 CGI 测试实例</title>"
print "</head>"
print "<body>"
print "<h2>%s官网:%s</h2>" % (site_name, site_url)
print "</body>"
print "</html>"

다음은 POST 방법 (방법 = "게시물")하여 서버 스크립트 hello_get.py에 데이터를 제출하는 형태이다 :

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>
<form action="/cgi-bin/hello_get.py" method="post">
站点名称: <input type="text" name="name">  <br />

站点 URL: <input type="text" name="url" />
<input type="submit" value="提交" />
</form>
</body>
</html>

다음과 같이 GIF 프리젠 테이션은 다음과 같습니다

CGI 프로그램은 체크 박스를 통해 데이터를 전달하는

다음과 같은 하나 이상의 옵션 데이터를 전송하는 데 사용되는 체크 박스, HTML 코드 :

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>
<form action="/cgi-bin/checkbox.py" method="POST" target="_blank">
<input type="checkbox" name="w3big" value="on" /> 本教程
<input type="checkbox" name="google" value="on" /> Google
<input type="submit" value="选择站点" />
</form>
</body>
</html>

코드 checkbox.py 파일 :

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 引入 CGI 处理模块 
import cgi, cgitb 

# 创建 FieldStorage的实例 
form = cgi.FieldStorage() 

# 接收字段数据
if form.getvalue('google'):
   google_flag = "是"
else:
   google_flag = "否"

if form.getvalue('w3big'):
   w3big_flag = "是"
else:
   w3big_flag = "否"

print "Content-type:text/html"
print
print "<html>"
print "<head>"
print "<meta charset=\"utf-8\">"
print "<title>本教程 CGI 测试实例</title>"
print "</head>"
print "<body>"
print "<h2> 本教程是否选择了 : %s</h2>" % w3big_flag
print "<h2> Google 是否选择了 : %s</h2>" % google_flag
print "</body>"
print "</html>"

checkbox.py 권한을 수정합니다 :

chmod 755 checkbox.py

브라우저 액세스 지프 프리젠 테이션 차트 :

CGI 프로그램을 통해 무선 데이터 전송

다음 라디오 만 서버로 데이터를 전송하고, HTML 코드 :

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>
<form action="/cgi-bin/radiobutton.py" method="post" target="_blank">
<input type="radio" name="site" value="w3big" /> 本教程
<input type="radio" name="site" value="google" /> Google
<input type="submit" value="提交" />
</form>
</body>
</html>

다음과 같이 radiobutton.py 스크립트 코드는 다음과 같습니다

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 引入 CGI 处理模块 
import cgi, cgitb 

# 创建 FieldStorage的实例 
form = cgi.FieldStorage() 

# 接收字段数据
if form.getvalue('site'):
   site = form.getvalue('site')
else:
   site = "提交数据为空"

print "Content-type:text/html"
print
print "<html>"
print "<head>"
print "<meta charset=\"utf-8\">"
print "<title>本教程 CGI 测试实例</title>"
print "</head>"
print "<body>"
print "<h2> 选中的网站是 %s</h2>" % site
print "</body>"
print "</html>"

radiobutton.py 권한을 수정합니다 :

chmod 755 radiobutton.py

브라우저 액세스 지프 프리젠 테이션 차트 :

CGI 프로그램을 통해 텍스트 영역의 데이터를 전송

다음과 같이 서버에 데이터의 여러 행 텍스트 영역 패스, HTML 코드는 다음과 같습니다

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>
<form action="/cgi-bin/textarea.py" method="post" target="_blank">
<textarea name="textcontent" cols="40" rows="4">
在这里输入内容...
</textarea>
<input type="submit" value="提交" />
</form>
</body>
</html>

다음과 같이 textarea.py 스크립트 코드는 다음과 같습니다

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 引入 CGI 处理模块 
import cgi, cgitb 

# 创建 FieldStorage的实例 
form = cgi.FieldStorage() 

# 接收字段数据
if form.getvalue('textcontent'):
   text_content = form.getvalue('textcontent')
else:
   text_content = "没有内容"

print "Content-type:text/html"
print
print "<html>"
print "<head>";
print "<meta charset=\"utf-8\">"
print "<title>本教程 CGI 测试实例</title>"
print "</head>"
print "<body>"
print "<h2> 输入的内容是:%s</h2>" % text_content
print "</body>"
print "</html>"

textarea.py 권한을 수정합니다 :

chmod 755 textarea.py

브라우저 액세스 지프 프리젠 테이션 차트 :

드롭 다운 패스 데이터를 CGI 프로그램을 통해.

HTML 드롭 다운 상자 코드를 다음과 같이 :

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>
<form action="/cgi-bin/dropdown.py" method="post" target="_blank">
<select name="dropdown">
<option value="w3big" selected>本教程</option>
<option value="google">Google</option>
</select>
<input type="submit" value="提交"/>
</form>
</body>
</html>

dropdown.py 스크립트 코드를 다음과 같이 :

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 引入 CGI 处理模块 
import cgi, cgitb 

# 创建 FieldStorage的实例 
form = cgi.FieldStorage() 

# 接收字段数据
if form.getvalue('dropdown'):
   dropdown_value = form.getvalue('dropdown')
else:
   dropdown_value = "没有内容"

print "Content-type:text/html"
print
print "<html>"
print "<head>"
print "<meta charset=\"utf-8\">"
print "<title>本教程 CGI 测试实例</title>"
print "</head>"
print "<body>"
print "<h2> 选中的选项是:%s</h2>" % dropdown_value
print "</body>"
print "</html>"

dropdown.py 권한을 수정합니다 :

chmod 755 dropdown.py

브라우저 액세스 지프 프리젠 테이션 차트 :


CGI는 쿠키를 사용합니다

큰 단점에서 HTTP 프로토콜은 프로그래머에게 불편의 큰 거래를 제공하여 사용자의 신원을 판단 할 문제이지만,이 결핍 위해 만든 쿠키 기능이 나타납니다.

ID를 결정하는 기능을 달성하도록 클라이언트 하드 디스크에 고객의 브라우저를 통해 고객이 고객이 다음 스크립트를 방문 할 때 데이터를 검색, 데이터 레코드를 작성하는 동안 스크립트에 액세스 쿠키는 쿠키 일반적 신원 확인에 사용했다.

쿠키 구문

다음과 같이 HTTP 쿠키를 달성하기 위해 HTTP 헤더를 통해 전송되고, 그 파일을 전송했다, 헤더 설정 쿠키 구문은 다음과 같습니다

Set-cookie:name=name;expires=date;path=path;domain=domain;secure 
  • 이름 = 이름 :; 여러 이름 값이있는 경우 (번호 ""및 ""이름이 사용될 수 없다) 쿠키의 값을 ";", 예를 들어 분리 : NAME1 = NAME1; NAME2 = NAME2 ; NAME3 = NAME3.
  • 형식 쿠키 유효 기간 : = 날짜를 만료 = "Wdy, DD- 만료 월 - YYYY의 HH를 : MM를 : SS를"
  • 경로 = 경로 : 경로 설정 쿠키 지원, 경로, 예를 들어 경로, 발효 디렉토리 엔트리의 모든 파일 및 서브 디렉토리의 쿠키 인 경우 : 경로 = "/ CGI-빈 /" 경로가 파일 인 경우, 쿠키 그것은 예를 들어,이 파일의 발효를 의미 = "이 방법으로 / cgi-bin / cookie.cgi"경로입니다.
  • 도메인 = 도메인 : 쿠키의 도메인 네임 예를 들어, 유효 : 도메인 = "www.w3big.com"
  • 고정이 플래그가 지정된 경우에만 쿠키 SSL 프로토콜 HTTPS 서버를 통해 전송 될 수있다.
  • 쿠키는 쿠키 변수를 검색하여 정보를 얻을 수 있고, 환경 변수 HTTP_COOKIE 달성 CGI 프로그램을 설정하여 수신된다.

쿠키 설정

쿠키 설정, 쿠키는 HTTP 헤더에 개별적으로 매우 간단 전송됩니다된다. 다음 예는 이름을 설정하고 쿠키에 만료 :

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 
print 'Content-Type: text/html'
print 'Set-Cookie: name="本教程";expires=Wed, 28 Aug 2016 18:30:00 GMT'
print
print """
<html>
	<head>
		<meta charset="utf-8">
		<title>本教程(w3big.com)</title>
	</head>
    <body>
        <h1>Cookie set OK!</h1>
    </body>
</html>
"""

cookie_set.py 위의 코드를 저장하고 cookie_set.py 권한을 수정 :

chmod 755 cookie_set.py

위의 예는 쿠키 정보를 설정하려면 Set-Cookie 헤더를 사용 옵션은 쿠키를 같은 시간이 만료 만료 도메인 도메인, 경로 경로와 같은 다른 속성을 설정합니다. 이 정보가 제공됩니다 : "콘텐츠 형식 text / html과"전에.


쿠키 정보 검색

쿠키 정보 검색 페이지는 쿠키 정보가 저장되어 다음과 같이 CGI 환경 변수 HTTP_COOKIE으로, 저장 형식은 매우 간단하다 :

key1=value1;key2=value2;key3=value3....

여기 쿠키 정보를 검색하는 간단한 CGI 프로그램은 :

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 导入模块
import os
import Cookie

print "Content-type: text/html"
print

print """
<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>
<h1>读取cookie信息</h1>
"""

if 'HTTP_COOKIE' in os.environ:
    cookie_string=os.environ.get('HTTP_COOKIE')
    c=Cookie.SimpleCookie()
    c.load(cookie_string)

    try:
        data=c['name'].value
        print "cookie data: "+data+"<br>"
    except KeyError:
        print "cookie 没有设置或者已过去<br>"
print """
</body>
</html>

"""

cookie_get.py 위의 코드를 저장하고 cookie_get.py 권한을 수정 :

chmod 755 cookie_get.py

다음과 같이 더 많은 색 지프 쿠키 설정은 다음과 같습니다

파일 업로드의 예

HTML 설정 파일은 다음과 같이 / 코드를 폼 데이터를으로 multipart하기에 enctype 속성을 설정해야합니다 업로드 :

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>
 <form enctype="multipart/form-data" 
                     action="/cgi-bin/save_file.py" method="post">
   <p>选中文件: <input type="file" name="filename" /></p>
   <p><input type="submit" value="上传" /></p>
   </form>
</body>
</html>

다음과 같이 save_file.py 스크립트 파일의 코드는 다음과 같습니다

#!/usr/bin/python
# -*- coding: UTF-8 -*-

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 = '文件 "' + fn + '" 上传成功'
   
else:
   message = '文件没有上传'
   
print """\
Content-Type: text/html\n
<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>
   <p>%s</p>
</body>
</html>
""" % (message,)

save_file.py 위의 코드를 저장하고 save_file.py 권한을 수정 :

chmod 755 save_file.py

다음과 같이 더 많은 색 지프 쿠키 설정은 다음과 같습니다

유닉스 / 리눅스를 사용하는 경우, 당신은 할 수 있습니다 오픈 () 문을 사용할 필요가 창에서 파일 분리를 교체해야합니다 :

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

파일 다운로드 대화 상자

우리는 프로그램을 다운로드 현재 디렉토리에 foo.txt의 파일을 만듭니다.

다음 함수 코드가 구현하는 HTTP 헤더 정보를 설정하여 파일을 다운로드 :

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# HTTP 头部
print "Content-Disposition: attachment; filename=\"foo.txt\"";
print
# 打开文件
fo = open("foo.txt", "rb")

str = fo.read();
print str

# 关闭文件
fo.close()