/api/url/decode
/files/logo_path/{id}
url,如果他们为我提供了我设置的正确的api_key。请再次注意,所有人都无法访问网址= /files/logo_path/{id}
。
有人能告诉我这里做错了什么吗?
// API
Route::group(array('prefix' => 'api'), function(){
Route::get('url', array('before' => 'api', 'uses' => 'UrlController@index'));
Route::get('url/decode', 'UrlController@decode');
Route::get('files/logo_path/{id}', function($id)
{
$logo_path = app_path() . '/files/logo_path/' . User::find($id)->logo_path;
return Response::download($logo_path);
});
});
// API
Route::filter('api', function() {
if (Input::get('key') != '*********')
{
return Response::view('errors.404', array(), 404);
}
});
<img id="Company Logo" src="/files/logo_path/{{{ $distributor['user']['id'] or '' }}}" alt="logo" height="60px" width="200px">
答案 0 :(得分:0)
您的问题与过滤器无关。问题是您如何尝试显示数据。
Response::download()
是要求浏览器提示用户保存或打开文件。
但是你将这个链接代码放在img<>
html中 - 用于在页面上内嵌显示图像。
他们不能混在一起。
如果您想让用户只下载允许他们访问的图片,您可以保持当前路线不变 - 但将视图代码更改为
<a href="{{{ /files/logo_path/{{{ $distributor['user']['id'] or '' }}}""> Click here to download your file</a>
如果您想允许用户在页面上查看图像(仅当他们有权访问时) - 那么您可以将视图代码保持不变:
<img id="Company Logo" src="/files/logo_path/{{{ $distributor['user']['id'] or '' }}}" alt="logo" height="60px" width="200px">
但是将路线代码更改为:
Route::get('files/logo_path/{id}', function($id)
{
$logo_path = app_path() . '/files/logo_path/' . User::find($id)->logo_path;
return file_get_contents($logo_path);
});