当我将图像上传到本地主机中的存储文件夹时,它可以正常工作。但是,当我将Laravel 5.7项目移至共享托管图像时,这些图像不会出现,而且我也不知道为什么。
谢谢您的帮助。
刀片
@foreach ($data as $user)
@foreach(json_decode($user->name, true) as $images)
@endforeach
@endforeach
<!-- Wrapper for slides -->
<div class="carousel-inner">
@foreach ($data as $user)
@foreach(json_decode($user->name, true) as $images)
<div class="item">
<img src="{{ asset('/slider/images') }}/{{$images}}" alt="Los Angeles" style="width:100%;">
</div>
@endforeach
@endforeach
</div>
控制器
<?php
if ($request->hasfile('image')) {
foreach ($request->file('image') as $image) {
$name = $image->getClientOriginalName();
$image->move(storage_path() . '/slider/images/', $name);
$data[] = $name;
}
$query = DB::table('slider')->insert([
['title' => 'lorem', 'alt' => 'lorem', 'name' => json_encode($data)],
]);
return "good";
} else {
return "null";
}
答案 0 :(得分:0)
请尝试使用ssh登录并运行
php artisan storage:link
或在您的根laravel文件夹中创建.htaccess
并在下面添加此代码。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
并确保您对storage
文件夹具有适当的权限。
可能会有所帮助。
答案 1 :(得分:0)
https://stackoverflow.com/a/50771337/3240068
您的共享主机服务器可能允许也可能不允许符号链接。如果您运行该命令后仍然无法使用,则基本上有两个选择。
1)从存储空间上传/移动/复制图像到公共;
2)https://laravel.com/docs/5.7/responses#file-downloads
创建一个从存储读取和返回图像的路由和控制器。这未经测试,因此需要进行一些校对和研究,但是应该这样:
// Route
Route::get('storage-asset/{$path}', 'App\Http\SomeController@getStorageAsset');
// Controller
public function getStorageAsset($path)
{
if (File::exists(storage_path($path)) {
return response()->file(storage_path($path));
}
// If file not found.
return abort(404)
}
答案 2 :(得分:0)
您需要在公用文件夹中创建一个文件(例如,link.php),并在下面声明codes
。
确保在应用中声明路径。
<?php
symlink('../public_html/storage/app/public', '../public_html/public/storage');
然后,您可以访问your-domain.com/link.php
,仅此而已。完成