【发布时间】:2016-08-31 02:35:57
【问题描述】:
我正在 Laravel 5.2 中构建一个小型资产管理系统
用户可以将图像、视频等上传到应用程序,并且资产元数据存储在资产表中。在这种情况下,资产被重命名以匹配资产 ID(我也在存储原始文件名),我正在存储 mime 类型并将文件上传到 S3。
我遇到的问题是将 S3 url 存储在数据库中。
这是我的方法
public function store(AssetRequest $request)
{
// Initialise new asset and set the name
// from the form
$asset = new Asset(array(
'name' => $request->get('name')
));
$asset->user_id = Auth::user()->id;
// save the asset to the db
$asset->save();
// set the file var = form input
$file = $request->file('asset_path');
$extension = $file->getClientOriginalExtension();
// modify the asset name
$assetFile = $asset->id . '.' . $request->file('asset_path')->getClientOriginalExtension();
// push the new asset to s3
Storage::disk('s3')->put('uploads/' . $assetFile, file_get_contents($file));
$asset->mime = $file->getClientMimeType();
$s3Url = Storage::url($file);
$asset->s3_url = $s3Url;
$asset->original_filename = $file->getClientOriginalName();
$asset->filename = $assetFile;
$asset->file_extension = $extension;
// return ok
$asset->save();
return \Redirect::route('asset.create')->with('message', 'Asset added!');
}
与我尝试存储 S3 url 相关的行
$s3Url = Storage::url($file);
$asset->s3_url = $s3Url;
似乎只存储了一个临时路径 /storage//tmp/php8su2r0 而不是一个实际的 S3 url。我想避免手动设置存储桶,而是希望我可以使用config/filesystem.php中配置的内容@
有什么想法吗?
【问题讨论】:
标签: php laravel amazon-s3 laravel-5.2