【发布时间】:2018-12-16 21:29:22
【问题描述】:
我正在使用 laravel Artisan 命令从公共文件夹下载文件。
其实我想下载一个我在公共文件夹中成功制作的 zip 文件。
当我调用按钮单击的方法时,我可以下载文件。
但是当我在控制台中执行命令时它不起作用,也不会抛出任何错误。
public function downloadExportRawData() {
$a=public_path().'/temp/rawexport/rawexportproduct.zip';
$path='/temp/rawexport/rawexportproduct.zip';
if(file_exists('temp/rawexport/rawexportproduct.zip')){
return Response::download($a);
}else{
return "hello";
}
}
这个也试过了……
public static function downloadZip($rand_folder, $zipname, $fileName) {
header('Content-Type: application/force-download');
header('Content-Disposition: attachment; filename="' . $fileName . '.zip"');
header('Content-Length: ' . filesize($zipname));
$handle = fopen($zipname, 'rb');
//exec("rm -r ".$temp);
while (!feof($handle)) {
echo fread($handle, 1048576);
ob_flush();
flush();
}
fclose($handle);
// exec("rm -r " . $rand_folder);
}
命令是
php artisan product:export --from=http://localhost/valuable-app/dev-master/rest_app/public/ --productid=5b273b0e4bb5995b108b4576 --tokenexport=354c3ddb2bd45aa6e5c4f749749b0b58cbacef48
主要问题是它正在通过控制器中的功能但没有下载它。 我试图回应它以 zip 形式打印代码的响应意味着一种编码形式,它与我的 zip 文件相关,这意味着它打印 zip 而不是下载它。 我是第一次使用 Artisan。知道如何使用用户定义的 Artisan 命令下载该文件。
我从过去两周开始尝试这个,但无法做任何事情。
【问题讨论】:
-
你要下载到哪里?我想您想将文件保存到另一个位置,因为您正在控制台中运行它。
-
是在本地系统中,例如在下载文件夹中
-
也许你应该看看这个article。这是编写自定义工匠命令的一个很好的演练。
-
您已经向我们展示了您的控制器代码,该代码被设置为进行 浏览器 下载 - 设置内容标题(仅在浏览器中相关),从本地磁盘读取文件(仅与远程服务器上运行的代码相关)等。您向我们询问了一个工匠控制台命令,这是完全不同的东西,但您没有向我们展示任何代码。你的控制台代码在哪里?请记住,正如我所描述的,重用您向我们展示的控制器代码将无法在控制台中工作。
-
我正在做的是......以 json 格式导出数据并将它们放入一个文件中......然后我将此文件以 zip 格式放入公共文件夹中的 /temp 文件夹中...... . 然后尝试下载该 zip 文件....并在下载后删除该 /temp 文件夹