簡體   English   中英

是否可以觸發文件下載到用戶的瀏覽器?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM