我试图让用户在动态子文件夹中上传基于项目的图像。可以上传它们,但不能在前端获取它们。似乎有权限问题。
其Laravel 5.8。我已经通过Storage:链接尝试过了,但是到目前为止还行不通。也许我做错了。
这是我的Testupload函数,它将文件存储在例如storage / app / 35 / image.jpg
public function store($file, $project){
$filepath = $project->id.'/';
if($file){
Storage::disk('local')->put( $filepath .'/image.jpg', File::get($file));
}
}
那是我的路线:
Route::get('projectimage/{filename}', [
'uses' => 'projectController@getProjectImage',
'as' => 'getProjectImage'
]);
这是我的Blade模板部分:
@if (Storage::disk('local')->has($project->id.'/image.jpg'))
<img src="{{ route('getProjectImage', [$project->id.'/image.jpg'])}}" alt="">
@endif
那就是如何获取图像:
public function getProjectImage($filename){
$file = Storage::disk('local')->get($filename);
return new Response($file, 200);
}
我没有t change any config file, but I did
php artisan storage:link`,并通过“ public”而不是“ local”进行了尝试。没用但是它总是在没有子文件夹的情况下工作。我该如何解决?
我希望获得在FrontEnd中渲染的图像。结果链接为:src =“ http://myproject.test/projectimage/35/image.jpg”
现在我有一个奇怪的观点……如果我对子文件夹进行有效的硬编码。
$file = Storage::disk('local')->get('60/'.$filename);
我的解决方案:
刀片模板:
@if (Storage::disk('local')->has($project->id.'/image.jpg'))
<img src="{{ route('getProjectImage',['filename'=>'image.jpg', 'projectid'=>$project->id])}}" alt="">
@endif
控制器:
public function getProjectImage($filename, $project_id){
$file = Storage::disk('local')->get($project_id.'/'.$filename);
return new Response($file, 200);
}
随时改进我的代码。 :*
答案 0 :(得分:0)
在函数“ getProjectImage”中。
使用“ return response()-> file($ pathToFile);”会不会更好
我在这里留下了文档链接。 https://laravel.com/docs/5.8/responses#file-responses
答案 1 :(得分:0)
好的,Laravel似乎不允许视图侧的动态字符串输入获取服务器数据。我通过添加路线ID和图像名称作为参数来解决它。该路径将在控制器中构建。我将更新我的帖子。