我正在使用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/

10-11 22:57
查看更多