查看Force Download of Files with PHP和Force download file with PHP giving empty file以及让我最接近的人How to force download an image without a script, but with $_GET?
我仍然无法找到解决问题的方法。
我有一个html文件,允许用户提交文件以将文件发布到我的'upload_file.php'PHP脚本。
<html>
<body>
<form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>
upload_file.php接收文件,对其进行一系列更改,提取数据,最后通过PHPExcel生成xlsx文件。这是一种简单的格式转换,只需要一点点逻辑。目前,为了测试,我只是将文件与php文件一起编写。我可以让upload.php文件输出到所述文件的链接并称之为好。
但是,我宁愿用户点击初始上传按钮,经过几秒钟的处理后,生成的文件开始下载到他们的系统。以上链接似乎谈论正在下载的csv或html文件 - 与实际文件相比。
只是'回显'文件名似乎没有这样做(正如在其他线程中所建议的那样)。我还看到了一个正确设置标题的建议,我发现内容类型应该是xlsx文件的“application / vnd.openxmlformats-officedocument.spreadsheetml.sheet” - 但没有人真正完全充实了什么'设置标题的意思也不知道如何操作。
我无法想象这很难,但我似乎无法对其进行排序。任何人都可以帮助这个初学者吗?
另外,如果可能的话,如果文件根本不存在于服务器上,我会很喜欢它 - 但我不确定这对PHPExcel对象是否可行......
答案 0 :(得分:3)
用户上传文件,您可以记住上传文件的名称。
到那时,您可以使用之前的答案answered来解答如何强制下载文件的问题。
Pit Digger的解决方案:
$file_url = 'http://www.myremoteserver.com/file.exe';
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\"");
readfile($file_url); // do the double-download-dance (dirty but worky)
genesis的解决方案:
header("Content-Type: application/octet-stream");
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"file.exe\"");
echo readfile($url);
或者,对于 exe 文件:
header("Location: $url");
注意:很高兴看到你到目前为止所尝试的内容,看看你是否对如何完成任务有所了解,甚至可能会更好地告诉我们你在尝试什么实现。如果这不是您问题的答案,那么我强烈建议您编辑您的问题以启发我们,因为它可能更清楚。