2010-07-10 79 views
5

我想創建一個PHP網頁,其中顯示了類似如何創建一個PHP'即將開始下載'頁面?

Your download will begin shortly. 

If it does not start, please click here to restart the download 

即同一類型的頁面上各大網站存在的消息。

它會像這樣:

<a href="download.php?file=abc.zip">Click here</a> 

當用戶點擊該鏈接,他導致的download.php這說明他的消息,然後提供文件下載。

我該怎麼做?

非常感謝!

回答

2

鏈接需要做兩件事情之一:直接

    • 指向文件的Web服務器上的PHP腳本,它會做什麼,但設置相應的頭文件和提供服務的文件作爲頁面主體。沒有文字輸出!有關如何實際提供文件的信息,請參見http://teddy.fr/blog/how-serve-big-files-through-php

    讓瀏覽器自行啓動下載的一種方法是使用META REFRESH標籤。

    另一種方法是使用JavaScript,像這樣的(來自Mozilla的Firefox下載頁面):

    function downloadURL() { 
        // Only start the download if we're not in IE. 
        if (download_url.length != 0 && navigator.appVersion.indexOf('MSIE') == -1) { 
         // 5. automatically start the download of the file at the constructed download.mozilla.org URL 
         window.location = download_url; 
        } 
    } 
    
    // If we're in Safari, call via setTimeout() otherwise use onload. 
    if (navigator.appVersion.indexOf('Safari') != -1) { 
        window.setTimeout(downloadURL, 2500); 
    } else { 
        window.onload = downloadURL; 
    } 
    
  • +0

    例如看到這個頁面: http://www.mozilla.com/en-US/products/download.html? product = firefox-3.6.6&os = win&lang = en-US 這樣就有了文本輸出,但文件卻在下載。我想重複這樣的東西。 – Rohan 2010-07-10 05:19:22

    +0

    太好了,謝謝你的更新回答!我感覺合理:-) – Rohan 2010-07-10 05:30:59

    2
    <?php 
    // download.php 
    $url = 'http://yourdomain/actual/download?link=file.zip'; // build file URL, from your $_POST['file'] most likely 
    ?> 
    <html> 
        <head> 
         <!-- 5 seconds --> 
          <meta http-equiv="Refresh" content="5; url=<?php echo $url;?>" /> 
        </head> 
        <body> 
         Download will start shortly.. or <a href="<?php echo $url;?>">click here</a> 
        </body> 
    </html> 
    
    0

    如果你想確保該文件就會被下載(而不是在所示瀏覽器或瀏覽器插件),您可以設置Content-Disposition HTTP標頭。例如,強制PDF文件下載,而不是在瀏覽器插件開盤:

    header('Content-type: application/pdf'); 
    header('Content-Disposition: attachment; filename="foo.pdf"'); 
    readfile('foo.pdf'); 
    
    相關問題