通过邮件发送数据到PHP然后下载

时间:2016-08-04 10:46:44

标签: php jquery ajax post download

我有一个主题构建网站,为另一个不相关的项目创建主题。我有一些不同的输入,其中包含数据。我能够获取数据并将它们存储在变量中。当我单击下载按钮时,我希望变量发送到.php文件,然后下载该文件。我相信我发送它没问题,但下载数据似乎是困难的部分。

 $("#download-theme").click(function() {
    $(function() {
        $.ajax({
            type: "POST",
            url: 'download.php',
            data: ({
                value: value
            }),
            success: function(data) {
                alert(data);
            }
        });
    });
});

我相信这会将它发送到download.php文件,因为我收到了正确值的警报。我接下来要做的是将php文件的数据下载为.txt文件。也许我通过将它发送到php文件使其复杂化我不确定。

总而言之,我想从变量中获取数据并将其放入文件中,并让用户下载它。

编辑:我看到了quentino响应并且它有效,但我有5个输入,我需要通过一个提交按钮进行传输。

<input type="text" name="variable1" />
<input type="text" name="variable2" />
<input type="text" name="variable3" />
<input type="text" name="variable4" />
<input type="text" name="variable5" />
<input type="submit" value="send"/>

4 个答案:

答案 0 :(得分:2)

你确定你必须使用ajax吗?您可以使用隐藏表单,在onclick事件中设置数据并发送它。简单的一个文件示例:

<?php
if (isset($_POST['data'])) {
    header("Content-disposition: attachment; filename=\"test.txt.\"");
    echo $_POST['data'];
} else {
?>
<html>
    <body>
        <form method="post"/>
            <input type="text" name="data" />
            <input type="submit" value="send"/>
        </form>
    </body>
</html>
<?php } ?>

答案 1 :(得分:0)

根据我的阅读,没有真正的方法可以通过ajax将内容提取为下载格式。我已经使用内容处理进行了测试,但仍然无效。

如果您结帐:https://stackoverflow.com/a/20830337/3706559

他们解释说,通过更改窗口URL,您可以触发下载。由于下载页面实际上没有任何文本内容,它只是下载它实际上不会重定向您的用户它只会下载

答案 2 :(得分:0)

我不知道这是不是你需要的,但我试试。

function ajaxrequest(){
    $(isset($_POST['yourfirstdata']){
        $yourfirstdata=$_POST['yourfirstdata'];
    }
    $myfile = fopen($_SERVER['DOCUMENT_ROOT'] . "/newfile.txt", "w");
    $txt = "$yourfirstdata";
    fwrite($myfile, $txt);
    exit;
}

这是创建文件txt的可能代码。我认为它必然会节省在服务器上。

success: function(data) {
     alert(data);
        var a = $("<a>")
        .prop("href", "root-of-your-newfile/newfile.txt")
        .prop("download", "newfile.txt")
        .appendTo("body");
        a[0].click();
        a.remove();
    }

只需在ajax调用的“成功”中,即可下载文件create。

答案 3 :(得分:0)

虽然问题有点含糊不清。我正在回答你的问题。

是的,您可以使用Ajax获取文件,并且您做得很好。 要使浏览器下载文件,您需要传递一些标题,以便浏览器可以这样理解

使用以下代码使用PHP传递标头(如果您使用服务器端)

ob_clean();
flush();
$file = "somefile.xlsx";
header('Content-Description: File Transfer');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);

或者你也可以在Ajax的成功函数中使用javaScript传递相同的头文件