使用PHP自动下载文件

时间:2015-04-08 14:06:27

标签: php

我正在做一个用PHP将csv转换为json的小脚本。 我希望,当您上传文件并完成转换时,会自动下载转换后的文件

exec(/*some stuff*/); // i call the script that convert the csv into json, i get my converted file path back
chmod($newFilePath, 0777); // i give all access to the new file
startDownload($newFilePath); // i ask the autoDownload

这是下载功能

function startDownload($path){
    if (file_exists($path)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.basename($path));
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($path));
        readfile($path);
        exit();
    }
}

如果我回复readfile($path);filesize($path)我得到了文件内容(这正是我想要的)和良好的信息,我确信路径是正确的。但是当我执行脚本时没有任何反应。

我可能遗漏了一些愚蠢的东西^^

如何让用户下载此json文件?

我试图建立一个链接,他也这样做,这是一个访问问题或类似的东西?

编辑:

我在本地测试这个脚本,它运行得很好,所以问题来自权限或类似的东西。我对这种东西真的很糟糕,所以如果你有一些想法可以帮助^^

请求帮助!

1 个答案:

答案 0 :(得分:0)

exec之后缺少分号:

exec(); // i call the script that convert the csv into json, i get my converted file path back
chmod($newFilePath, 0777); // i give all access to the new file
startDownload($newFilePath); // i ask the autoDownload

我会检查chmod是否真的改变了路径权限:

if(chmod($newFilePath, 0777)){
    startDownload($newFilePath); 
}else{
    die('Permission denied');
}