Validating multiple file uploads with Laravel 4

后端 未结 4 1697
遥遥无期
遥遥无期 2021-02-06 17:22

How do I go about validating an array of uploaded files in Laravel 4? I\'ve set it in the form to allow multiple files, and I\'ve tested that the files exist in the Input::file(

4条回答
  •  北恋
    北恋 (楼主)
    2021-02-06 17:46

    I think, this is basically your initial solution. For anybody who's still confused, here's some code that worked for me…

    // Handle upload(s) with input name "files[]" (array) or "files" (single file upload)
    
    if (Input::hasFile('files')) {
        $all_uploads = Input::file('files');
    
        // Make sure it really is an array
        if (!is_array($all_uploads)) {
            $all_uploads = array($all_uploads);
        }
    
        $error_messages = array();
    
        // Loop through all uploaded files
        foreach ($all_uploads as $upload) {
            // Ignore array member if it's not an UploadedFile object, just to be extra safe
            if (!is_a($upload, 'Symfony\Component\HttpFoundation\File\UploadedFile')) {
                continue;
            }
    
            $validator = Validator::make(
                array('file' => $upload),
                array('file' => 'required|mimes:jpeg,png|image|max:1000')
            );
    
            if ($validator->passes()) {
                // Do something
            } else {
                // Collect error messages
                $error_messages[] = 'File "' . $upload->getClientOriginalName() . '":' . $validator->messages()->first('file');
            }
        }
    
        // Redirect, return JSON, whatever...
        return $error_messages;
    } else {
        // No files have been uploaded
    }
    

提交回复
热议问题