我正在使用laravel Artisan Commands从公用文件夹下载文件。
实际上,我想下载一个已在公用文件夹中成功制作的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
主要的问题是它正在通过 Controller 中的功能而不是下载它。
我试图回显它以zip形式打印代码的响应,这意味着与我的zip文件相关的某种编码形式意味着它打印了zip而不下载它。
我是第一次使用Artisan。任何想法如何使用用户定义的Artisan命令下载该文件。
我从最近的两个星期开始尝试此操作,但无能为力。
最佳答案
这个怎么样:
首先确定您要下载的文件,然后调用
string shell_exec ( string $cmd )
您可以使用wget来获取文件。
例如,在您的命令中
$fileName = $this->argument('filename');
$file = url('storage/public/' . $fileName);
shell_exec("wget $file");
$this->info('downloading');
关于php - 从Laravel Artisan的命令行下载文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51241442/