0

当我将图像上传到本地主机中的存储文件夹时,它工作正常。但是,当我将 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";
}
4

3 回答 3

0

您需要在公共文件夹中创建一个文件(例如,link.php)并声明codes以下内容。 确保在您的应用程序中声明您的路径。

<?php
    symlink('../public_html/storage/app/public', '../public_html/public/storage');

然后,您可以访问your-domain.com/link.php,仅此而已。完毕

于 2020-04-17T10:19:54.227 回答
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)
}
于 2018-12-01T16:34:26.660 回答
0

请尝试使用 ssh 登录并运行

php artisan storage:link

或创建.htaccess到您的根 laravel 文件夹并在下面添加此代码。

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

并确保您对您的storage文件夹具有适当的权限。

这可能会有所帮助。

于 2018-12-01T15:37:49.820 回答