laravel - Laravel 从 API 上传图片
问题描述
我正在尝试使用 API 上传图片。即使在运行第一个测试之后,数据库只存储了目录而不是文件名,最糟糕的是,它存储了存储图像所需的目录之前的所有目录。
我用于商店的代码如下:
public function store(Request $request)
{
$image = $request->file('image');
if($image == null){
$imagesDir = 'subjectImgs/';
$images = glob($imagesDir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
$fileDir = $images[array_rand($images)];
$path = $fileDir;
} else {
$path = $image->storeAs('uploads/images/store/', $image->getClientOriginalName(), 'public');
}
$subject = new Homework([
'subject_id' => $request->subject_id,
'user_id' => auth()->user()->id,
'title' => $request->name,
'image' => $path,
'progress' => $request->progress,
'description' => $request->description,
'duedate' => $request->date
]);
$subject->save();
return response()->json([
"code" => 200,
"message" => "Homework added successfully"
]);
}
我是从移动设备上传的,我相信这个信息也很重要(?)在模拟器中也有同样的问题。
解决方案
你$path
存入$subject->image
等于public_path() . '/uploads/images/store/';
. $file->getClientOriginalName()
如果你想要文件名,你应该添加:
$subject = new Homework([
...
'image' => $path . $file->getClientOriginalName(),
...
]);
推荐阅读
- python - 将 Python 2.7 升级到 3.7 并为 SOAP 调用实现 zeep
- node.js - 使用 React 和 Node 破坏浏览器缓存
- css - 在 Chrome 中查看时,小设备尺寸的媒体查询不起作用
- python - 从数据框创建子数据框
- c++ - 强制 lld 链接在不同 DWARF 版本中使用调试信息的可重定位文件
- angularjs - Angularjs 选择选项性能改进 - 按过滤器分组 3000 多个数据
- google-cloud-platform - 如何从另一个数据流中启动一个数据流
- javascript - 如何:在 node.js lambda 函数中等待/异步?
- python - 如何从操作系统环境变量创建字典?
- ios - libbson-1.0.0.dylib: mach-o, but not built for iOS 模拟器错误是在从 Github 添加 mongoSwift 驱动程序后尝试运行项目时显示