从ajax保存文件

时间:2014-12-02 11:28:22

标签: php jquery ajax iframe download

我想保存服务器上生成的图像。为此,我使用iframe,但单击后不显示“文件保存”对话框。我做错了什么?

的index.php

<html>
    <head>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
        <script>
            $(document).ready(function() {
                $('#onv-save-button').click( function() {
                    $.ajax ({               
                        url: "/ajax.php",
                        type: "POST",
                        success: function(data) {
                            $('#downloadFrame').attr('src' , data);
                        }
                    });
                });
            });

        </script>
    </head>
    <body>
        <iframe src="" id="downloadFrame" ></iframe>
        <button id="onv-save-button">Go!</button>
    </body>
</html>

ajax.php

<?  

    // Some actions to generate image
    echo "1.png" ;
?>

1 个答案:

答案 0 :(得分:0)

我做到了。这是问题的答案。

的index.php

<html>
    <head>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
        <script>
            $(document).ready(function() {
                $('#onv-save-button').click( function() {
                    $.ajax ({               
                        url: "/ajax.php",
                        type: "POST",
                        success: function(data) {
                            alert(data);
                            $('#downloadFrame').attr('src' , "download.php?file=" + data);
                        }
                    });
                });
            });

        </script>
    </head>
    <body>
        <iframe src="" id="downloadFrame" ></iframe>
        <button id="onv-save-button">Go!</button>
    </body>
</html>

ajax.php

<?  
    echo $_SERVER["DOCUMENT_ROOT"]."/1.png";
?>

的download.php

<?php

    $content = file_get_contents($_REQUEST['file']);
    header('Content-Description: File Transfer');
    header("Cache-Control: ");
    header("Pragma: ");
    header("Content-Disposition: attachment; filename=\"".basename($_REQUEST['file'])."\"");

    ob_end_clean();
    ob_start();
    echo $content;
    ob_end_flush();
    exit();

?>