我希望用户能够在我的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']);
答案 0 :(得分:0)
您应该尝试这可能是您了解我的答案及其对您的帮助:
public function downloadAudiobook($id)
{
try
{
if (Auth::user())
{
//Your table where you store your filename and get your file like
$resltFile = DB::table('yourTableName')->where('id',$id)->first();
$audiobook = public_path().'/uploads/audiobooks/audiobook_location/' . $resltFile->fileName;
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();
}
}