Laravel,正在获取上传文件的 url
Laravel, getting uploaded file's url
我目前正在做一个 Laravel 5.5 项目,我 想 上传文件, 和 然后,我想 得到他们的 url 回 文件(我必须在客户端使用它)。
现在我的代码如下所示:
public function pdfUploader(Request $request)
{
Log::debug('pdfUploader is called. ' . $request);
if ($request->hasFile('file') && $request->file('file')->isValid()) {
$extension = $request->file->extension();
$fileName = 'tmp' . round(microtime(true) * 1000) . '.' . $extension;
$path = $request->file->storeAs('temp', $fileName);
return ['status' => 'OK', 'path' => URL::asset($path)];
}
return ['status' => 'NOT_SAVED'];
}
工作正常,我返回了 OK 状态和路径,但是当我想使用路径时,我得到 HTTP 404。我检查了,文件上传正常..
我的想法是,我应该在路由中注册新的url。如果我必须这样做,我该如何动态地做到这一点,如果它不是必需的,我的功能有什么问题?
谢谢提前回答。
默认情况下 laravel 将所有上传的文件存储到存储目录中,例如,如果您调用 $request->file->storeAs('temp', 'file.txt');
laravel 将在 storage/app/
中创建 temp
文件夹并且把你的文件放在那里:
$request->file->storeAs('temp', 'file.txt'); => storage/app/temp/file.txt
$request->file->storeAs('public', 'file.txt'); => storage/app/public/file.txt
但是,如果您想让上传的文件可以从网络访问,有两种方法可以做到:
将上传的文件移至 public 目录
$request->file->move(public_path('temp'), $fileName); // => public/temp/file.txt
URL::asset('temp/'.$fileName); // http://example.com/temp/file.txt
注意:确保您的网络服务器有权写入 public 目录
从存储目录创建符号link到public目录
php artisan storage:link
此命令将创建一个从 public/storage
到 storage/app/public
的符号 link,在这种情况下,我们可以将我们的文件存储到 storage/app/public
并使它们可以从网络访问通过 symlinks:
$request->file->storeAs('public', $fileName); // => storage/app/public/file.txt
URL::asset('storage/'.$fileName); // => http://example.com/stoage/file.txt
我目前正在做一个 Laravel 5.5 项目,我 想 上传文件, 和 然后,我想 得到他们的 url 回 文件(我必须在客户端使用它)。
现在我的代码如下所示:
public function pdfUploader(Request $request)
{
Log::debug('pdfUploader is called. ' . $request);
if ($request->hasFile('file') && $request->file('file')->isValid()) {
$extension = $request->file->extension();
$fileName = 'tmp' . round(microtime(true) * 1000) . '.' . $extension;
$path = $request->file->storeAs('temp', $fileName);
return ['status' => 'OK', 'path' => URL::asset($path)];
}
return ['status' => 'NOT_SAVED'];
}
工作正常,我返回了 OK 状态和路径,但是当我想使用路径时,我得到 HTTP 404。我检查了,文件上传正常..
我的想法是,我应该在路由中注册新的url。如果我必须这样做,我该如何动态地做到这一点,如果它不是必需的,我的功能有什么问题?
谢谢提前回答。
默认情况下 laravel 将所有上传的文件存储到存储目录中,例如,如果您调用 $request->file->storeAs('temp', 'file.txt');
laravel 将在 storage/app/
中创建 temp
文件夹并且把你的文件放在那里:
$request->file->storeAs('temp', 'file.txt'); => storage/app/temp/file.txt
$request->file->storeAs('public', 'file.txt'); => storage/app/public/file.txt
但是,如果您想让上传的文件可以从网络访问,有两种方法可以做到:
将上传的文件移至 public 目录
$request->file->move(public_path('temp'), $fileName); // => public/temp/file.txt
URL::asset('temp/'.$fileName); // http://example.com/temp/file.txt
注意:确保您的网络服务器有权写入 public 目录
从存储目录创建符号link到public目录
php artisan storage:link
此命令将创建一个从 public/storage
到 storage/app/public
的符号 link,在这种情况下,我们可以将我们的文件存储到 storage/app/public
并使它们可以从网络访问通过 symlinks:
$request->file->storeAs('public', $fileName); // => storage/app/public/file.txt
URL::asset('storage/'.$fileName); // => http://example.com/stoage/file.txt