使用 Laravel 在本地保存文件

Jam*_*3sn 2 php laravel

我在 Laravel 本地保存文件,但是在获取正确的 URL 和访问文件时遇到问题。

我已经与 Artisan 设置了符号链接:

php artisan storage:link 
Run Code Online (Sandbox Code Playgroud)

保存时,我添加public/了名称,因此文件被放置在/storage/app/public/目录中,这是有效的。

if ($request->hasFile('files')) {
    $files = array();

    foreach ($request->file('files') as $file) {
        if ($file->isValid()) {
            $name = time() . str_random(5) . '.' . $file->getClientOriginalExtension();
            Storage::disk('public')->put($name, $file);
            $files[] = $name;
        }
    }

    if (count($files) > 0) {
        $response->assets = json_encode($files);
    }
}
Run Code Online (Sandbox Code Playgroud)

该名称存储在数据库中

["1524042807kdvws.pdf"]
Run Code Online (Sandbox Code Playgroud)

然后,资产将通过我的 Vue API 作为 JSON 对象的一部分返回

if (count($response->assets) > 0) {
    $assets = array();
    foreach (json_decode($response->assets, true) as $asset) {
        $assets[] = asset($asset);
    }
    $responses[$key]->assets = $assets;
}
Run Code Online (Sandbox Code Playgroud)

返回的http://127.0.0.1:8000/1524042807kdvws.pdf只是 404。我认为我自己有点困惑,所以任何指示或帮助将不胜感激。

Jam*_*3sn 6

所以我在另一篇文章中找到了答案

我需要把 ; 包$file起来file_get_contents()

Storage::disk('public')->put($name, $file);
Run Code Online (Sandbox Code Playgroud)

而不是asset()我使用:

Storage::disk('public')->url($asset['file']);
Run Code Online (Sandbox Code Playgroud)