【问题标题】:How can I display Laravel images on a live server?如何在实时服务器上显示 Laravel 图像?
【发布时间】:2021-12-26 19:01:48
【问题描述】:

我开发了一个 laravel 应用程序,它与图像一起在我的本地机器上完美运行。在部署到实时服务器时,图像不再可见。我正在使用共享主机,我的文件夹结构是这样的:public_html 包含上传等公共文件,ma​​in 包含用户不应该看到的剩余文件。这是我的控制器`公共功能

PortfolioAdd(){
        return view('frontendbackend.portfoliosection.addportfolio');
    }

    public function PortfolioStore(Request $request){

            $validatedData = $request->validate([
                'title' => 'required:portfolio_sections,title',
                'description' => 'required:portfolio_sections,description',
            
            
        ]);

        $data = new PorfolioSection();
        $data->title = $request->title;
        $data->description = $request->description;

        if ($request->file('image')) {
            $file = $request->file('image');
            $filename = date('YmdHi').$file->getClientOriginalName();
            $file->move(public_path('upload/portfolio_images'),$filename);
            $data['image'] = $filename;
        }
     
        $data->save();

`这是我的观点

                  <table id="example1" class="table table-bordered table-striped" style = "color:white">
                    <thead>
                    <tr>
            <th width="5%" style = "color:white">SL</th>
            <th style = "color:white">Title</th>
            <th style = "color:white">Description</th>
            <th style = "color:white">Image</th>
            <th style = "color:white">Action</th>    
        </tr>
    </thead>
    <tbody> 
    @foreach($allData as $key => $portfolio )
        <tr>
            <td style = "color:white"> {{ $key+1 }} </td>
            <td> {{ $portfolio->title }} </td>
            <td> {{ $portfolio->description }} </td>
            <td> 
                
                <img src="{{ (!empty($portfolio->image))? url('upload/portfolio_images/'.$portfolio->image):url('upload/no_image.jpg') }}" style="width: 60px; width: 60px;"> 
                           </td>    

            
            <td>
            <a href="{{route('view.portfolio.edit', $portfolio->id)}}" class="btn btn-info">Edit</a>
            <a href="{{route('view.portfolio.delete', $portfolio->id)}}" class="btn btn-danger" id="delete">Delete</a>

            </td>
        </tr>
        @endforeach
                    </tbody>
                    <tfoot>
                         
                    </tfoot>
                  </table>

【问题讨论】:

  • 您是否将存储链接到php artisan storage:link
  • 不。请问我该怎么做。感谢您的回复
  • 您将图像存储在 public_html 中?通常您将文件存储在存储文件夹中...

标签: php html laravel


【解决方案1】:

最简单的方法是在您的公共文件夹中创建一个文件夹,例如,portfolio_images。

if ($request->has('photo')) {
    $photoName= time() . 'photo' . $request->photo->extension();
    $request->photo->move(public_path('portfolio_images'), $photoName);
}

这会将其保存在 public/portfolio_images 中。

那么在你看来

 <img id="previewImg" src="{{ asset("portfolio_images/$portfolio->image") }}" alt="Preview your image" height="150">

这应该可以解决!

【讨论】:

    【解决方案2】:

    首先检查 ($portfolio->image) 是否通过直接在标签中传递它来显示任何值,即

    {{ $portfolio->图像}}

    如果返回值,请检查该值是否存在于您的文件夹中。 如果它存在 ch 然后检查您的图像 src。

    【讨论】:

    • 感谢您的回复。实际上,在我的 PUBLIC_HTML 中,我创建了一个名为 upload 的文件夹,然后在上传时我还有其他文件夹,其中的图像应该上传到投资组合中,我在 PUBLIC_HTML 中有 PORTFOLIO_IMAGES。但是,每当我上传图像时,它都会在 MAIN 中创建一个新文件夹并将其称为 PORTFOLIO_IMAGES 并将图像放在那里,而不是将其上传到我创建的 UPLOADS 文件夹下的 PUBLIC_HTML。所以这会阻止图像显示在 html 上。请问有办法解决吗?再次感谢您的耐心和时间
    • 最简单的方法是在您的公共文件夹中创建一个文件夹,例如,portfolio_images。
    • 最简单的方法是在您的公共文件夹中创建一个文件夹,例如,portfolio_images。那么 if ($request->has('photo')) { $photoName= time() . '照片' 。 $request->receipt->extension(); $request->photo->move(public_path('portfolio_images'), $photoName);这将把它保存在 public>portfolio_images 中。然后在你的视图中写 image") }}" alt="Preview your image" height="150"> 这应该可以解决!
    【解决方案3】:

    我会尝试以下(尚未测试)

    改变这个:$file-&gt;move(public_path('upload/portfolio_images'),$filename);

    收件人:$file-&gt;move(public_path() . 'upload/portfolio_images',$filename);

    【讨论】:

    • 感谢您的帮助。但这只是在主目录中创建了另一个名为 publicupload 的文件夹并将图片转储到那里。我希望图片位于 public_html 文件夹中,以便我可以将其显示给浏览器。或者有没有办法直接从 MAIN 文件夹中将它显示到浏览器先生。如果可以解决这个问题,我将不胜感激。我感谢所有尝试解决此问题的人。
    【解决方案4】:

    您必须为此创建一个符号链接。 上传文件的默认文件夹是存储文件夹。 通过运行 php artisan storage:link,应用程序将生成一个符号链接,文件将从公共区域访问。 谷歌符号链接。你会找到答案的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-04
      • 1970-01-01
      • 2016-04-06
      • 1970-01-01
      相关资源
      最近更新 更多