[asp.net-mvc-3] jQuery Ajax調用PDF文件下載



0 Answers

您可以使用錨標籤和PHP強制下載來執行pdf下載,而不是在您的頁面中多做一個ajax調用

HTML
    <a href="www.example.com/download_file.php?file_source=example.pdf">Download pdf here</a>

PHP
<?php
$fullPath = $_GET['fileSource'];
if($fullPath) {
    $fsize = filesize($fullPath);
    $path_parts = pathinfo($fullPath);
    $ext = strtolower($path_parts["extension"]);
    switch ($ext) {
        case "pdf":
        header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\""); // use 'attachment' to force a download
        header("Content-type: application/pdf"); // add here more headers for diff. extensions
        break;
        default;
        header("Content-type: application/octet-stream");
        header("Content-Disposition: filename=\"".$path_parts["basename"]."\"");
    }
    if($fsize) {//checking if file size exist
      header("Content-length: $fsize");
    }
    readfile($fullPath);
    exit;
}
?>

我正在檢查文件大小,因為如果從CDN cloudfront加載PDF,則不會獲得強製文檔以0kb下載的文檔大小,為了避免這種情況,我正在檢查這種情況

  if($fsize) {//checking if file size exist
      header("Content-length: $fsize");
    }

我也正在努力解決這個問題,上面的代碼為我工作,我希望它可以幫助

Question

我的問題類似於下載並使用Ajax打開PDF文件

但不完全一樣,我想要一個JQuery ajax的原因是我的文件是從將從同一頁面獲取的數據動態生成的。

所以基本上我有一個Json對象需要被發送到服務器,它將動態生成一個文件,並將其發送回瀏覽器。

我不希望使用查詢字符串與我的Json對象字符串,因為我認為這將是一個潛在的威脅,因為查詢字符串有字符限制(我在這裡嗎?)。

請讓我知道如果我的工作流程是正確的,或者我可以使用不同的流程實現同樣的事情。




Related