PHP头文件下载(Laravel)

PHP头文件下载(Laravel),php,laravel,header,Php,Laravel,Header,我有一个简单的问题。我正在尝试进行头下载(另存为对话框窗口)以从服务器下载文件。我的代码: public function downloadBill() { $id = Input::get('post_id'); $db = DB::connection('smsservice'); $file_ = $db->table('bills')->where('id', $id)->pluck('blob'); $filename = 'downl

我有一个简单的问题。我正在尝试进行头下载(另存为对话框窗口)以从服务器下载文件。我的代码:

public function downloadBill()
{
    $id = Input::get('post_id');
    $db = DB::connection('smsservice');
    $file_ = $db->table('bills')->where('id', $id)->pluck('blob');
    $filename = 'download.txt';
    File::put($filename, base64_decode($file_));

    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($filename));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($filename));


}

“另存为”对话框启动,我可以下载文件download.txt,但该文件为emtpy 0 kb,这使我得出结论,下载位置不等于保存的“download.txt”的位置。我试着把文件放到不同的位置,甚至在D:\磁盘上,但我没能让它工作。有人能帮我吗?

Laravel有一个内置的方法来返回下载响应<代码>响应()->下载($filePath)。这将自动处理文件下载所需的一切

我还倾向于使用
storage\u path()
函数将文件保存到一个明确已知的合适目录中,而不是让PHP将其保存在它喜欢的地方

$filename = storage_path(sprintf('/downloads/%s.txt', $id));
File::put()
是否返回false?另外,您是否确认
$file\uu
中有任何数据?如果您
dd($file)
它是否返回数据?