【发布时间】:2018-02-02 22:44:40
【问题描述】:
我希望用户能够在我的 Laravel 应用程序中下载文件。我在公共文件夹中有很多文件,每个文件都属于一个帖子。例如,当管理员创建新帖子并上传文件(例如帖子中的图片)时,用户可以下载该图片/或 pdf。
我制作了一个按钮,以便用户可以下载文件,但出现错误:
The file "/home/vagrant/Code/BDC/public/uploads/audiobooks/audiobook_location/1" does not exist
这是我的代码,带有一个下载按钮来做“魔术”:
public function downloadAudiobook($id)
{
try
{
if (Auth::user())
{
$audiobook = public_path('uploads/audiobooks/audiobook_location/' . $id);
return response()->download($audiobook);
}
else
{
return redirect()->route('login')->with('validate', 'Por favor inicia sesión para descargar este audiolibro');
}
}
catch(ModelNotFoundException $e)
{
Session::flash('flash_message', "Ha ocurrido un error procesando su solicitud, intente mas tarde.");
return redirect()->back();
}
}
我知道,我在文件所在的路径中传递了 ID,因为,我不知道该怎么做。
这是我的路线:
Route::get('audiobooks/download/{id}',['as' => 'audiobooks.download','uses' => 'AudiobookController@downloadAudiobook']);
【问题讨论】:
-
也许你忘了附加文件扩展名?我想你的路径应该类似于
public_path('uploads/audiobooks/audiobook_location/' . $id. '.pdf') -
我同意@AndriyLozynskiy,尝试附加文件扩展名。
-
是的,我愿意,但是,真正的问题是 Laravel 给了我一个“文件”,它是文件的路径:“public/uploads/audiobooks/audiobook_location/1”直到 /audiobook_location/很好,但是,“/1”在哪里需要有文件名才能下载,所以,路径必须是:“public/uploads/audiobooks/audiobook_location/*文件名.mp3”你呢?懂我吗?
-
你在哪个表存储你的文件名如“test.mp3”?
-
表格为“有声读物”,该表格中保存了所有以有声读物为主题的帖子的信息文件
标签: php laravel file pdf download