我是第一次创建媒体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请求答案 0 :(得分:0)
这是我想出的解决方案:)
这将上传多个文件并检查扩展名中的有效文件。
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);
}
}
答案 1 :(得分:-1)
作为api的二进制文件发送。