2015-10-05 74 views
0

我有点困惑与响应::下载()4.2Laravel响应::下载()没有Laravel暴露的下载路径

我想触发下载一个ZIP压缩文件,而不暴露实际的公共路径该文件的..

这是访问

Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException 

我的路线是这样写的路由时,我得到的错误:

/* 
/Download Package (GET) 
*/ 
Route::get('/download-packages/{$package}', array(
    'as' => 'download-package', 
    'uses' => '[email protected]' 
)); 

在控制器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函数中触发。

回答

1

所以,原来从代码走开并回来将它与眼睛刷新后,我只是有一个路由错误,,路由参数$包不应该有“$”,在它的面前..

/* 
/Download Package (GET) 
*/ 
Route::get('/download-packages/{package}', array(
    'as' => 'download-package', 
    'uses' => '[email protected]' 
));