我在 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。我认为我自己有点困惑,所以任何指示或帮助将不胜感激。
所以我在另一篇文章中找到了答案
我需要把 ; 包$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)