【问题标题】:Laravel Response::download() without exposing download pathLaravel Response::download() 不暴露下载路径
【发布时间】:2016-01-02 17:44:04
【问题描述】:

我对 Laravel 4.2 中的 Response::download() 有点困惑

我想在不暴露文件的实际公共路径的情况下触发 ZIP 存档的下载..

这是我在访问路由时遇到的错误

Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException

我的 ROUTE 是这样写的:

/*
/ Download Package (GET)
*/
Route::get('/download-packages/{$package}', array(
    'as'    => 'download-package',
    'uses'  => 'DownloadController@getPackageDownload'
));

Controller中的getPackageDownload函数是这样写的:

public function getPackageDownload( $package ){

    $file = public_path() . "/downloads/packages/" . $package . ".zip" ;
    $name = $package . ".zip";

    $headers = array(
        'Content-Type' => 'application/zip',
    );

    return Response::download($file, $name, $headers);
}

我的查看按钮代码:

<a href="{{ URL::route('download-package',[$package->package]) }}" target="_blank">Download</a></div>

视图中生成的下载链接是这样的

http://app.dev/laravel/public/download-packages/package-name

它与 ZIP 文件的实际公共位置不同,但这是需要的,我的理解是应该在 getPackageDownload 函数中触发响应。

【问题讨论】:

    标签: laravel-4 download laravel-routing


    【解决方案1】:

    所以,在离开代码并以神清气爽的目光回到它之后,结果发现我只是遇到了一个路由错误,路由参数 $package 不应该在它前面有“$”..

    /*
    / Download Package (GET)
    */
    Route::get('/download-packages/{package}', array(
        'as'    => 'download-package',
        'uses'  => 'DownloadController@getPackageDownload'
    ));
    

    【讨论】:

      猜你喜欢
      • 2013-12-23
      • 2018-11-17
      • 2018-06-19
      • 2014-10-16
      • 2013-01-18
      • 2015-05-31
      • 2010-10-26
      • 2015-11-17
      • 2013-05-28
      相关资源
      最近更新 更多