我想创建一个媒体存储应用程序,允许用户在我的平台上上传和查看他们的媒体。我使用 laravel 来创建它。我已成功将其上传到具有私有文件属性的谷歌云存储,并将文件名保存到我的数据库中。
我的问题是,如何直接从 laravel 访问它,并将其显示为图像或视频,目前我有 cide.json 文件作为密钥,但我从未得到如何使用它的详细说明。
好的,如果我想象你的表结构,它可能像
id user_id file_location
你可以构建一个像
Route::get('users/{id}/files', FolderName\ControllerName@ControllerFunction)
现在您可以通过传递 id 来获取您的用户媒体文件,或者您可以根据您的想法修改您的控制器以获取所有用户媒体文件。
简要说明:
Routes.php
在 Laravel 项目的文件中添加此路由
Route::get('users/{id}/files', User\UserApiController@fetchUserMediaFiles);
创建一个新的控制器来管理对服务功能的请求的流程
class UserApiController {
public $userService;
public function __construct(UserService $userService) {
$this->userService = $userService;
}
public function fetchUserMediaFiles($id) {
$userMediaFiles = $this->userService->fetchUserMediaFiles($id);
return $this->done(null, [
'userMediafiles' => $userMediaFiles
]);
}
}
创建一个新服务来处理来自 Controller 的传入请求并将其发送到存储库
class UserService {
private $userRepository;
public function __construct(UserRepository $userRepository) {
$this->userRepository= $userRepository;
}
public function fetchUserMediaFiles($id) {
return $this->userRepository->fetchUserMediaFiles($id);
}
}
创建新的存储库,它将接受来自 userService 类的请求,并通过从您的数据库中获取数据来返回您的数据
class UserRepository {
public function fetchUserMediaFiles($id) {
$userMediaFilesTable = UserMediaFiles::$TABLE_NAME;
$model = UserMediaFiles::with([])
->where("$userMediaFilesTable.user_id", $id);
$model = $model->select(["$userMediaFilesTable.user_id", "$userMediaFilesTable.file_location"])
->get();
return $model;
}
}
现在让我们尝试使用一个虚拟的 get 请求来访问 api
http://xxxxxxxx/api/users/1/files
你的反应是这样的
{
"userMediafiles": [
{
"user_id": 1,
"file_location": "https://xxxxx.com/file",
}
]
}
这就是你在 Laravel 中所做的。希望这个解释有帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句