[英]Is it possible to trigger file download to a user's browser?
是否可以強制文件下載到用戶的瀏覽器(當然有標准的對話框提示)? 由服務器觸發。 基本上我正在考慮將文件推送到來自服務器文件系統的瀏覽器。 或者由於安全沙箱,這是不可能的? 如果這是不可能的,有不同的方式非常接近這個? 我不想在用戶同意的情況下發送文件。 我可以想到兩步法,首先提示用戶輸入數據,然后讓用戶點擊OK按鈕觸發下載,但接近下載結束時,用戶將獲得另一個確認框(標准下載提示,要求打開)或保存)。 如果一步到位可能會很好。
這絕對是可能的。 假設您希望服務器觸發此操作,您只需向其發送此標頭:
Location: http://www.foo.com/path/to/file
其中foo.com
是您的域,它包含文件的路徑。 這會將用戶發送到您的文件鏈接,並將其自動下載。
現在,為了解決瀏覽器查看內容的問題,您需要服務器端代碼來發布Content
頭信息(使用PHP作為示例):
<?php
header("Content-Type: application/octet-stream");
header("Content-Length: " . filesize($file));
header('Content-Disposition: attachment; filename=' . $file);
readfile($file);
?>
希望這能夠很好地作為偽代碼來幫助您入門。 祝好運!
使用ajax json腳本每隔5秒或10秒輪詢一次服務器,當服務器准備好文件時,回答“我有一個文件”,iframe移動到該文件所在的url,然后處理作為正常下載。
我提供了一個小例子,說明我應該如何認為它應該有效,所以你有一些工作要做。 我沒有檢查它的錯誤,它更像是一個概念驗證的東西。
jQuery示例(不帶json):
$.ajax('/myserverscript.php?fileready=needtoknow').done(function(data)
{
if(data.indexOf("I have a file") != -1)
{
xdata = data.split('\n');
data = xdata[1];
document.getElementById('myiframe').location.href = data;
}
});
PHP代碼
$x = filecheckingfunction();// returns false if none, returns url if there is a file
if($x !== false)
{
echo 'I have a file\n';
echo $x;
}
由於您知道必須提示用戶,因此請嘗試使用type="application/octet-stream"
的普通超鏈接。
您還可以在標題中使用: "content-disposition: attachment"
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.