php - Laravel 通过 API 上传多张图片
问题描述
我正在创建一个媒体 API,这是第一次创建 API。
我有这个代码:
/**
* Store a newly created resource in storage.
*
* @param \App\Http\Requests\UploadRequest $request
* @return \Illuminate\Http\Response
*/
public function store(UploadRequest $request)
{
if(!$request->hasFile('fileName')) {
return response()->json(['upload_file_not_found'], 400);
}
$file = $request->file('fileName');
if(!$file->isValid()) {
return response()->json(['invalid_file_upload'], 400);
}
if($request->hasfile('fileName'))
{
$media = new Media();
$data = array();
foreach($request->file('fileName') as $image)
{
$rdm = uniqid(5);
$name= $rdm .'-'.$image->getClientOriginalName();
$image->move(public_path().'/images/', $name);
$data[] = $name;
}
$media->fileName = json_encode($data);
$media->clientId = $request->clientId;
$media->uploadedBy = Auth::user()->id;
$media->save();
}
return ["success" => "Your media file has been successfully uploaded"];
}
请你能帮我为什么它不将图像上传到公共路径。它也不在数据库中存储任何内容。发送我的 POST 请求时,我从邮递员那里得到一个 200 代码,但是数据库有一个空数组作为文件名?
**** 编辑 ****
我正在上传多张图片。因为我正在为移动应用程序制作 api,所以没有这种形式。该请求是对 URL /api/v1/media 的 POST 请求
解决方案
这是我想出的可行的解决方案:)
这会上传多个文件并检查有效文件的扩展名。
public function store(UploadRequest $request)
{
if(!$request->hasFile('fileName')) {
return response()->json(['upload_file_not_found'], 400);
}
$allowedfileExtension=['pdf','jpg','png'];
$files = $request->file('fileName');
$errors = [];
foreach ($files as $file) {
$extension = $file->getClientOriginalExtension();
$check = in_array($extension,$allowedfileExtension);
if($check) {
foreach($request->fileName as $mediaFiles) {
$media = new Media();
$media_ext = $mediaFiles->getClientOriginalName();
$media_no_ext = pathinfo($media_ext, PATHINFO_FILENAME);
$mFiles = $media_no_ext . '-' . uniqid() . '.' . $extension;
$mediaFiles->move(public_path().'/images/', $mFiles);
$media->fileName = $mFiles;
$media->clientId = $request->clientId;
$media->uploadedBy = Auth::user()->id;
$media->save();
}
} else {
return response()->json(['invalid_file_format'], 422);
}
return response()->json(['file_uploaded'], 200);
}
}
推荐阅读
- android - 是否可以从 Java/Kotlin 中的 android WorkManager 类启动广播接收器
- excel - 在 MS Excel 中标记准重复项
- java - 我是否需要服务器才能将在我的应用程序中创建的 PDF 发送到另一台设备上的同一应用程序(不同帐户)?
- sql - SQL 查询没有整体执行
- node.js - 在 Linux Ubuntu 的 Windows 子系统中链接 Windows 命令
- javascript - 将鼠标悬停在一个元素上以使另一个元素可见
- javascript - Discord JS 遇到问题
- typescript - 我可以从通用参数推断枚举值吗?
- sql-server - 如何在左连接上的空值的情况下重复值
- request - SKStoreReviewController.requestReview() 费率不来 Appstore