php-公共文件夹外的Laravel访问图像
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-公共文件夹外的Laravel访问图像,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2666字,纯文字阅读大概需要4分钟。
内容图文
![php-公共文件夹外的Laravel访问图像](/upload/InfoBanner/zyjiaocheng/692/816736be535846539cbf66c82124be11.jpg)
我需要将图像存储在后端以供已登录的用户使用.存储的图像需要受到保护,并且从外部(公共)看不到.我为此选择了一个“存储”文件夹.
我在控制器中想到了这个:
public function update(Request $request, $id)
{
//Show the image
echo '<img src="'.$_POST['img_val'].'" />';
//Get the base-64 string from data
$filteredData=substr($_POST['img_val'], strpos($_POST['img_val'], ",")+1);
//Decode the string
$unencodedData=base64_decode($filteredData);
//Save the image
$storagepath = storage_path('app/images/users/' . Auth::user()->id);
$imgoutput = file_put_contents($storagepath.'/flyer.png', $unencodedData);
return view('backend.flyers.index')->withImgoutput($imgoutput)
//->withStoragepath($storagepath);
}
点击保存按钮后,将触发update(),我可以在视图中看到该图像,并且该图像也存储在我的文件夹中(当前用户= 10)“ storage / app / images / users / 10 / flyer. PNG”
我的问题是如何访问图像路径?
我想用img src =“”>显示存储的图像.我不知道在“ src = …”里面放什么
解决方法:
在处理Web应用程序中的用户文件上传时,主要方面是关于用户内容的安全性.
人们应该使用安全的方式在Web应用程序中上载用户的私人文件.
与您的情况一样,您要访问公用文件夹外部的用户图像.
可以通过以下最安全的方式完成此操作.
首先在Laravel的根目录(公用文件夹所在的目录)中创建一个目录,让该目录的名称上载.使用此目录上载私人用户文件.
如果是图片,请在上传文件中创建另一个目录,作为uploads / images /在上传目录中,这样您就可以为不同类型的文件使用不同的存储位置.
请记住,将图像以不同的名称上传到ima??ges目录中,并且不带扩展名,以使其看起来像是无扩展名的文件.
将文件名及其扩展名保留在数据库中,以后可用于保留图像的位置.
现在,您需要创建一条单独的路线来显示用户图像.
Route::get('users/{id}/profile_photo', 'PhotosController@showProfilePhoto')->name('users.showProfilePhoto');
PhotosController.php
class PhotosController extends Controller {
private $image_cache_expires = "Sat, 01 Jan 2050 00:00:00 GMT";
public function showProfilePhoto($id) {
$user = User::find($id);
$path = base_path() . '/uploads/images/';
if($user && $user->photo) // Column where user's photo name is stored in DB
{
$photo_path = $path . $user->photo; // eg: "file_name"
$photo_mime_type = $user->photo_mime_type; // eg: "image/jpeg"
$response = response()->make(File::get($photo_path));
$response->header("Content-Type", $photo_mime_type);
$response->header("Expires", $this->image_cache_expires);
return $response;
}
abort("404");
}
}
一旦访问名为-users.showProfilePhoto的路由,PhotosController-showProfilePhoto($user_id)内部的上述方法将立即运行.
您的HTML代码将如下所示.
<img src="<?php echo route('users.showProfilePhoto', array('id' => $user->id)); ?>" alt="Alter Text Here">
上面的代码将像超级按钮一样工作,并且图像将显示给用户,而无需向公众声明/发布正确的图像路径.
据我说,这是处理Web应用程序中文件上传的安全方法.
内容总结
以上是互联网集市为您收集整理的php-公共文件夹外的Laravel访问图像全部内容,希望文章能够帮你解决php-公共文件夹外的Laravel访问图像所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。