2013-04-23 55 views
2

我想下載通過PHP方法創建的zip文件。 當用戶點擊一個「下載」圖標時,該壓縮文件就會創建並自動下載。下載JS在PHP中創建的ZIP文件

壓縮文件的創建工作正常。 PHP方法結束如下:

header("Content-disposition: attachment;filename=\"archive.zip\""); 
    header('Content-Type: application/zip'); 
    header('Content-Length: ' . filesize($path_archive)); 
    readfile($path_archive); 
    return; 

這是我的JS文件中的AJAX方法。 路徑是我的函數創建檔案所必需的。

$.ajax({ 
     url: "url_of_PHP_method", 
     data : { path : path }, 
     type: 'GET', 
     success: function (data) { 
      var uriContent = "data:application/zip;" + data; 
      var myWindow = window.open(uriContent, "archive.zip"); 
      myWindow.focus(); 
     } 
    }); 

不幸的是,下載的文件被稱爲「下載」。 它沒有擴展名,即使我有一個.zip擴展名重命名,有一個錯誤打開它:

End-of-central-directory signature not found. 

海你們遇到了同樣的問題?我在這個網站上發現了類似的問題,但沒有一個面臨相同的情況。在此先感謝:)

回答

2

由於安全問題,Ajax無法用於下載文件。您可以創建一個超鏈接定期向你的PHP腳本,它的操作和瀏覽器會顯示保存下載對話框,而無需離開當前頁面,你在

示例代碼:

<script type="text/javascript"> 
location.href = "url_of_PHP_method"; 
</script> 
+0

@Charlie你的整個評論沒有通過.. – raidenace 2013-04-23 15:55:22

+0

@Raidenade是的,對不起,我想我不能在評論中寫代碼。感謝您的回答。我正在通過$(「body」)。on(「click」,「。download」,function(){...})捕獲用戶的點擊,並調用一個JS方法,其中只包含我在上面發佈的AJAX。 – Charlie 2013-04-23 16:02:04

+0

所以我想知道如何替換這個,因爲你告訴我要創建另一個超鏈接 – Charlie 2013-04-23 16:04:05