2011-09-21 254 views
0

我有一個ssh服務器用於在線存儲我的文件。我需要使這些文件可以輕鬆下載,所以我使用paramiko庫連接到ssh服務器(從我的python腳本),然後列出文件並顯示在網頁上。問題是我不想將文件下載到Web服務器的磁盤(沒有足夠的空間),然後將它們發送給客戶端,而不是像讀取文件一樣,並吐出它像它可以在PHP中完成。將文件從ssh服務器直接傳輸到客戶端

這樣的事情在python

<?php 
// your file to upload 
$file = '2007_SalaryReport.pdf'; 
header("Expires: 0"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 
header("Content-type: application/pdf"); 
// tell file size 
header('Content-length: '.filesize($file)); 
// set file name 
header('Content-disposition: attachment; filename='.basename($file)); 
readfile($file); 
// Exit script. So that no useless data is output-ed. 
exit; 
?> 
+1

答案取決於您使用的Web框架。 Python有不同的API的幾個不同的Web framkeworks。 – rocksportrocker

+0

我目前正在嘗試普通的CGI腳本,但我已經開放給webapp2,web.py和Django .. – voldyman

回答

0

CGI腳本上stdout其傳遞到Web服務器生成輸出。輸出以標題行,一個空白行(作爲分隔符)和內容開始。

因此您必須將header()調用更改爲print語句。和readfile($file)

print 
print open("2007_SalaryReport.pdf","rb").read() 

更換見http://en.wikipedia.org/wiki/Common_Gateway_Interface

1

不是一個程序員的回答:不是的paramiko,與sshfs安裝與文件目錄和服務文件,就好像它們是本地文件系統上

http://fuse.sourceforge.net/sshfs.html

+0

我不是在web服務器上的根目錄,所以不能安裝軟件(免費帳戶) – voldyman

相關問題