我正在尝试通过我的API下载一个文件,这个API由javascript (axios
)调用。我可以看到我来自api的响应是Resource id #19
,并且它包含正确的信息,但是我现在如何下载它呢?
PHP代码
$filename = "Export file";
$delimiter = "\t";
$output = fopen('php://output', 'w');
fwrite($output, "sep=\t" . PHP_EOL);
// ... put stuf in document
fclose($output);
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename=' . $filename . '.csv');
header('Content-Type: text/csv; charset=utf-8');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
echo $output; // also tried readfile($output) but it triggers an error that it needs a valid path
发布于 2017-04-20 10:11:49
最后发现不可能通过ajax请求进行下载。只要打开一个带有url的新窗口,它就可以很好地下载。
示例(客户端)
var win = window.open(`${apiPath}export`, '_blank');
win.focus();
发布于 2017-04-20 06:32:25
php://output是一个只写的流,它允许您以与print和echo相同的方式写入输出缓冲区机制。你不能从这条小溪里读回来。
我认为您希望使用php://php来读取响应体。
https://stackoverflow.com/questions/43522362
复制相似问题