2015-11-23 140 views
1

我試圖讓用戶選擇下載並保存網頁到他們想要的位置。我一直在尋找解決方案,但似乎沒有任何工作。我在經典的asp中使用vbscript。使用vbscript下載並保存網頁

這是我最後一次嘗試

dim xHttp: Set xHttp = createobject("Microsoft.XMLHTTP") 
dim bStrm: Set bStrm = createobject("Adodb.Stream") 
xHttp.Open "GET", "" &Session("ServerURL") & "/idautomation/IDAutomationStreamingLinear.aspx?D=MAPS$"&request.QueryString("catcode")&"%25"&request.QueryString("typecode")&"&X=0.09&BH=3&S=0&CC=T&LM=5&TM=7.5&ST=F", False 
xHttp.Send 

with bStrm 
    .type = 1 '//binary 
    .open 
    .write xHttp.responseBody 
    .savetofile "d:\DownloladPdf.pdf", 2 '//overwrite 
end with 

但它拋出一個「寫入文件失敗。」在.savetofile線。

我希望用戶能夠選擇在哪裏保存它...

+0

顯示您嘗試過的代碼。這不是作業解決服務 – mumair

+0

我編輯我的問題 – programmingGirl

+0

可能的重複[如何使用vbscript中的經典asp下載文件](http://stackoverflow.com/questions/12929866/how-to-download-the-files-使用-vbscript-in-classic-asp) – Dijkgraaf

回答

0

您不能保存從服務器端代碼VBScript中的用戶計算機直接,因爲這將是一個重大的安全問題,使驅動器通過人們瀏覽網頁的妥協。它可能導致錯誤的原因是它試圖保存它在服務器端,但服務器上沒有D :.

相反,您希望使用Response將PDF提供給瀏覽器,並讓瀏覽器顯示或保存PDF。

下面的例子是使用字節數組而不是流,但它應該是類似的。如果您想強制它下載而不是在瀏覽器中顯示,請將內容處置更改爲附件。您也可以將文件名更改爲任何您喜歡的。

if Len(pdfBytes) > 0 then 
    Response.Clear() 
    Response.ContentType = "application/pdf" 
    Response.Charset = "" 
    Response.AddHeader "Cache-Control", "public, max-age=1" ' Setting Cache-Control to max-age=1 rather than no-cache due to IE8 bug 
    Response.AddHeader "content-disposition","inline; filename=filename.pdf" 
    Response.Buffer = True 
    Response.Expires = 0 
    Response.BinaryWrite(pdfBytes) 
    Response.Flush 
    Response.End 
    Response.Close 
end if