php - 图像拒绝出现在 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。
我检查了文件路径,并且图像在那里。图片正在上传。它将文件名存储在数据库中,与已命名的图像完全相同。我似乎无法显示它。
我还尝试了以下方法:
- 将图像 SRC 路径中的 {{asset('...')}} 替换为 {{url('...')}}。
- 尝试使用 {{ storage_path }} / {{$image->name }} 作为图像 SRC 路径。
- 我尝试运行命令:php artisan storage:link
在这一点上,我没有想法。路径似乎是正确的。该图像确实存在于服务器上。只是似乎不想显示。
有什么想法吗?
解决方案
推荐阅读
- c++ - QTableView:模型中的 endMoveRows 重置水平标题大小
- python - 不使用任何库或模块的 Python 随机函数
- python - 紧凑的可读性差?
- sas - SAS - 更改从数据库返回的日期格式
- python - pyqt5 覆盖 dropEvent python
- node.js - 即使使用了 export 和 require 也无法在另一个 js 文件中返回值
- excel - VBA - 如何加快过滤过程
- laravel - 为什么在 Laravel 5.7.12 中将我的路由类型从 POST 更改为 GET 以注销?
- c# - 两个 Nuget 包引用了冲突的反应库
- angular - 如何将 Angular 应用程序与超过 1 个服务器连接?