2013-01-31 54 views
1

我有它設置標題用下面的命令Perl代碼的輸出行爲不同IIS和Apache

print "Content-Disposition: attachment; filename=test.csv\n\n"; 

上的Web服務器IIS和Apache部署時,該腳本行爲不同的Perl腳本。

當代碼部署在apache web服務器上時,我可以在android mobile上下載test.csv文件。

但是,當在IIS服務器上部署相同的腳本時,Android手機上的下載始終不成功。

注意:但下載工作像魅力在任何桌面瀏覽器的兩個Web服務器。

以下是IIS

(Status-Line) HTTP/1.1 200 OK 
Server Microsoft-IIS/6.0 
Content-Disposition attachment; filename=test.csv 
X-Powered-By ASP.NET 
Date Thu, 31 Jan 2013 10:10:59 GMT 
Connection close 

響應標題下面的Apache

(Status-Line) HTTP/1.1 200 OK 
Date Thu, 31 Jan 2013 10:12:33 GMT 
Server Apache/2.2.22 (Win32) 
Content-Disposition attachment; filename=test.csv 
Keep-Alive timeout=5, max=100 
Connection Keep-Alive 
Transfer-Encoding chunked 
Content-Type text/plain 

是響應頭任何一個可以幫助我解決這個問題呢?

謝謝!

+1

你能展示更多的代碼嗎?你正在使用CGI模塊還是其他框架? – 2013-01-31 14:37:14

+0

我沒有使用任何cgi模塊,它是簡單的Perl代碼(無框架)。 它只有這麼多的代碼,你可以說:) –

+1

正如你所看到的,Content-Disposition頭是相同的,所以你爲什麼認爲這是問題?你在用什麼下載?它如何不成功? – ikegami

回答

1

非常感謝您的支持。

我嘗試了以下Perl代碼,它幫我解決這個問題

# Set the header using following way 
print "Content-Type: text/plain", "\n"; 
print "Content-length: $length", "\n"; 
print "Content-Disposition: attachment; filename=test.csv\n\n"; 

注:$長度是存儲文件內容長度如下圖所示

my $csv = "testing"; 
my $length = length $csv; 

感謝變量!

+0

我很高興你找到了解決方案。接受你自己的答案是有效的。 – 2013-02-01 08:10:50

0

看來,其他人也遇到麻煩的IIS服務器下載到Android:

http://code.google.com/p/android/issues/detail?id=33362

.apk IIS webserver download error on android 2.3.x

http://www.experts-exchange.com/Programming/Languages/Java/Android/Q_27592118.html

我不認爲這是一個Perl的問題。雖然我沒有看到解決方案。

+0

第一個案例使用基本的HTTP驗證。 @Amit Vikram,你在用嗎? – ikegami

+2

第二個鏈接的評論意味着設置Content-Type將有所斬獲。 – ikegami

+0

@ikegami我試過不同的內容類型,但它沒有幫助我。 –