laravel - 有没有办法获取我在 s3 存储桶上上传的文件的原始 url 名称
问题描述
我目前正在使用 laravel 在 s3 存储桶上存储多个文件。现在我已经编写了一些函数来存储文件。我遇到的主要问题是每次我返回文件时它总是显示 tmp 文件。在我现在观看的教程中与我返回的输出不同。为了更好地理解,我将展示一些图片。
问题:为什么我的输出返回 tmp 文件名?
我的输出:
教程输出:
我的功能:
$file_upload = $request->file('files');
foreach($file_upload as $file) {
$file->store('bucket','s3');
// Storage::disk('s3')->setVisibility($file,'public');
$store_file = File::create([
'filename' => basename($file),
'url' => Storage::disk('s3')->url($file)
]);
}
return $store_file;
解决方案
在将文件名和 url 存储在数据库中时,您必须使用返回值store()
而不是使用返回值:UploadedFile
$file_upload = $request->file('files');
foreach ($file_upload as $file) {
$path = $file->store('bucket', 's3');
$store_file = File::create([
'filename' => basename($path),
'url' => Storage::disk('s3')->url($path)
]);
}
return $store_file;
PS:
您的 return 语句没有多大意义,目前当您上传多张图片时,它只会返回最后上传的一张,而不是全部,因为$store_file
每次迭代都会覆盖。
推荐阅读
- php - Laravel 7 和 Laratrust 6 中的播种表不成功
- python - 使用 re 和 beautifulsoup 从网页中获取数字时遇到问题
- c++ - 错误:(-210:不支持的格式或格式组合)“创建”函数中的硬件视频解码器不支持视频源
- c# - INSERT 语句与 FOREIGN KEY 约束“FK_products_categories_CategoryId”冲突
- wordpress - 如何停止从 HTTP 到 HTTPS 的重定向
- python - 使用 python 从 mp3 文件中获取图像
- r - 合并 2 个数据框并更新 R 中的列值
- python - 损失和准确性无法提高
- java - JAVA:两个浮点数的差异
- c# - 无法连接到 Docker 中托管的网络核心 gRPC 服务