当前位置: 首页 > 知识库问答 >
问题:

Laravel 5:无法显示上载的图像和文件权限

羊舌自强
2023-03-14

在我的Laravel5项目中,我将图像上载到公用文件夹的子文件夹中。示例:public/uploads/logos/imagename。jpg。图像已成功上载,但我有两个问题:

>

  • 我不能使用在视图中显示图像

    当使用下面的代码删除图像时,我得到了另一个文件权限问题:

    $path="上传/标识/imagename.jpg"; if(file_exists($path)){解除关联($path);}

    请告知如何正确上传,删除上传的文件,并显示上传的图像。

    谢谢你,纳伦


  • 共有1个答案

    鞠宏恺
    2023-03-14

    有几个laravel和第三方功能可以为您解决此问题,为了更好地解释,让我们解决一个常见问题,上传用户头像:

    您有以下表格:

    <form method="POST" action="/avatar" accept-charset="UTF-8" enctype="multipart/form-data">
    {{ csrf_field() }}
            <div>
               <input name="avatar" type="file">
            </div>
    <div class="margin-top-10">
        <input type="submit" class="btn green" value="Submit" /> 
    </div>
    

    这是上传文件的表单,请注意,您需要输入accept charsetenctype属性,以便文件字段与后端协同工作。在此之后,您必须让控制器上载化身,想象您拥有ProfileController类,简单如下操作:

    public function set_profile_picture(Request $request) {
            $user = $request->user();
            if (!$request->hasFile('avatar')) {
                Flash::error('Avatar not found');
                return redirect('/profile');
            }
            $path = $request->file('avatar')->store('avatars');
            $user->avatar = $path;
        $user->save();
        return redirect('/profile');
    }
    

    检查是否可以使用$request从前端表单获取文件-

    最后,你需要做另一个东西来显示上传的图片,你必须选择,存储在服务器中的文件是由Laravel中的存储门面制作的,所以,你会发现你不能公开访问这些文件,因为它们在一个名为存储的文件夹中,所以您可以始终创建一个符号链接到包含化身的文件夹,以便在公共文件夹中访问它们,在该文件夹中,您可以使用前面的控制器和所有这些东西,但是如果你正在使用一些VCS,比如git,这个符号链接将来可能会给你带来问题,最安全的方法是在你的控制器中定义另一个操作来访问你存储中的私有文件,下面是更好的方法:

     Route::get('avatars/{filename}', function ($filename) {
    
       $path = storage_path() . '/app/avatars/' . $filename;
       if(!File::exists($path)) abort(404);
    
       $file = File::get($path);
       $type = File::mimeType($path);
    
       $response = Response::make($file, 200);
       $response->header("Content-Type", $type);
    
       return $response;
    });
    

    您可以在laravel官方文档中找到有关存储外观的更多信息,取消文件链接很简单\Storage::Delete('/path/to/file.jpg')

    希望它能帮助你这个小小的展览,贝斯特

     类似资料:
    • 我是NodeJS的新手,我正在使用express、ejs和Multer(处理多部分/表单数据)开发一个项目,以便上传一张图片(单个>>个人资料图片)。我一直试图在一个视图中显示上传的文件(图像),但没有成功。我有关于上传文件(req.file)的所有信息,但我不能用它做任何事情。 有人能帮帮我吗。 问候你,多娜

    • Mac OSX Netbeans JAVA 目标:21点程序…我正在尝试将扑克牌的图像图标显示在JLabel中 逻辑:我创建了一些CARD对象,用一个方法返回与之相关的imageIcon。在我的主GUI类中,如果我创建新的imageIcon来指定文件位置,它就会工作 注释掉的行工作正常,显示imageIcon图像,但是当我使用card1.getImage()方法时,图像不显示。方法很简单- 此外,

    • 我正在开发一个推荐服装的网站。所以,我希望客户把他们的形象,这是在他们的地方。 首先,我尝试了。但不提供自定义选项。我必须用我的照片显示按钮。因此,我尝试了按钮选项,并编写了这样的代码。 null null

    • 我有一个图像是6400×3200,而我的屏幕是1280×800。因此,图像需要调整大小,仅供显示。我使用的是Python和OpenCV 2.4.9。根据OpenCV文档, 如果需要显示大于屏幕分辨率的图像,则需要在IMShow之前调用namedWindow(“”,WINDOW_NORMAL)。

    • 问题内容: 我目前正在编写一个程序,需要以jar形式发送给朋友。该程序具有需要加载的图像,以便程序正常运行,我希望所有图像都包含在一个jar中。目前,它无法从可执行jar或通过命令行运行时运行。它可以在netbeans中工作。 这是我正在使用的代码: 要加载我正在使用的图像: 对于我也尝试过的网址 应该在其中创建图像的行是: 我的jar文件设置为在其顶层包含类文件的文件夹和资源文件夹。 我一直在寻

    • 问题内容: 我想使用Java读取文件夹中的所有图像。 什么时候: 我按下Java应用程序中的按钮, 它应该: 在弹出窗口中询问目录的路径, 然后 从该目录加载所有图像, 然后 显示其名称,尺寸类型和尺寸。 如何进行? 我有用于读取图像以及文件夹中所有图像的代码,但是我上面所说的事情如何完成? 欢迎任何建议或帮助!请提供参考链接! 问题答案: 未经测试,因为未在装有JDK的计算机上进行测试,所以请耐