从Laravel的存储中返回文件下载

时间:2017-04-28 08:57:16

标签: php laravel

我希望能够从我的控制器中的存储中检索文件。

public function getFile($fileID) {
    $file = CommUploads::where('id', $fileID)->first();

    if (Auth::user()->id == $file->user_id || Auth::user()->id == $file->artist_id) {
        $fileGet = Storage::get($file->file_path);
        return $fileGet;
    }
}

现在,我能够正确地获得路径,然而,所有出现的都是胡言乱语,好像你正在查看没有扩展名的图像。

理想情况下,我希望将此作为"另存为"那类的东西。

我该怎么做?

1 个答案:

答案 0 :(得分:3)

您应该使用file download response

public function getFile($fileID) {
    $file = CommUploads::where('id', $fileID)->first();

    if (Auth::user()->id == $file->user_id || Auth::user()->id == $file->artist_id) {
        return response()->download(storage_path('app/' . $file->file_path));
    }
}

返回一个字符串是不好的做法。使用Laravel responses时,Laravel会确保正确设置标头和其他要求,以便将响应返回给浏览器。