Laravel通过API上传多张图片

时间:2018-12-10 10:05:38

标签: php laravel 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请求

2 个答案:

答案 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的二进制文件发送。

php file_get_contents