繁体   English   中英

Laravel下载文件

[英]Laravel download files

我希望用户能够在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 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();
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM