2016-11-17 16 views
-1

私はCGIを使ってファイルのダウンロードをしようとしていましたが、ダウンロードしたファイルにはpythonスクリプトファイルの名前があります。Python CGI filedownload名の変更

私のコード:名前の代わりにdownloadedFiledownload.py

#Source file name : download.py 
#HTTP Header 
fileName='downloadedFile' 
print "Content-Type:application/octet-stream; name=\"%s\"\r\n" %fileName; 
print "Content-Disposition: attachment; filename=\"%s\"\r\n\n" %fileName; 

data= '' 

try: 
    with open(fullPath,'rb') as fo: 
     data = fo.read(); 
    print data 
except Exception as e: 
    print "Content-type:text/html\r\n\r\n" 
    print '<br>Exception :' 
    print e 

ファイルがダウンロードされます。ダウンロードしたファイル名をdownloadedFileに設定するにはどうすればよいですか?

答えて

1

PHPからコピーしましたか? (PHPは;を使用しますが、Pythonは必要ありません)

\nが多すぎます。 Python printには自動的に\nが追加されます。

最初のヘッダー(最初のprint)の後に2つの\n\n( '\ n'はprintで追加されました)の後にヘッダーの後に空白行があり、ヘッダーの最後を意味します。だから、名前の付いた2行目はヘッダーではなくボディーの一部として扱われました。

#!/usr/bin/env python 

import os 
import sys 

fullpath = 'images/normal.png' 
filename = 'hello_world.png' 

print 'Content-Type: application/octet-stream; name="%s"' % filename 
print 'Content-Disposition: attachment; filename="%s"' % filename 
print "Content-Length: " + str(os.stat(fullpath).st_size) 
print # empty line between headers and body 
#sys.stdout.flush() 

try: 
    with open(fullpath, 'rb') as fo: 
     print fo.read() 
except Exception as e: 
    print 'Content-type:text/html' 
    print # empty line between headers and body 
    print 'Exception :', e 
+0

ありがとうございます。 – Kajal