首页 > 解决方案 > 图像拒绝出现在 Laravel

问题描述

我有一个允许用户上传多张图片的表单:

<form method="post" action="/submitWorkOrder" id="work-order-form" enctype="multipart/form-data">
    {{ csrf_field() }}
    <div class="form-group">
        <label for="priority">Attach Image(s)</label>
        <input type="file" class="form-control" id="work-order-images" name="work-order-images[]" multiple/>
    </div>
</form>

我的控制器中有以下内容:

public function submitWorkOrder(request $request) {
    
    $uniqueID = uniqid("wo-");
    $woStatus = "incomplete";
    $errors = 0;
    $errorString = "";

    if($request->hasFile('work-order-images')) {
        $allowedfileExtension=['pdf','jpg','png','gif','tif','bmp','svg','psd','eps'];
        $files = $request->file('work-order-images');

        foreach($files as $file){
            $filename = $file->getClientOriginalName();
            $extension = $file->getClientOriginalExtension();
            $check=in_array($extension,$allowedfileExtension);

            if($check) {
                $filename = $file->store('public');
                $image = new Image;
                $image->name = $filename;
                $image->parent_id = $uniqueID;
                $image->save();
            } else {
                $errors++;
                $errorString = "Incorrect Image Type Uploaded.";
            }
        }
    }
    
    if ($errors == 0) {
        return redirect('/work-orders')->withSuccess("Work Order Successfully Created");
    } else {
        echo $errorString;
    }   
}

最后,在我的刀片模板中,我有:

@foreach($images as $image)
    <img src="{{asset('storage/app/'.$image->name)}}"/>
@endforeach

当我转到具有该标记的 URL 时,它会吐出一个损坏的图像,SRC 为:http: //127.0.0.1 :8000/storage/app/public/l536mgPiNvjrAB15w41X2ka9CcGdkY8sNltEK9n1.png

如果我将其实时推送到服务器,则 URL 是相同的,除了http://127.0.0.1:8000之外,它将替换为站点的实时 URL。

我检查了文件路径,并且图像在那里。图片正在上传。它将文件名存储在数据库中,与已命名的图像完全相同。我似乎无法显示它。

我还尝试了以下方法:

在这一点上,我没有想法。路径似乎是正确的。该图像确实存在于服务器上。只是似乎不想显示。

有什么想法吗?

标签: phplaravelimage

解决方案


推荐阅读