shahr's avatar
Level 10

strncmp() expects parameter 1 to be string array given

I have a multiple image. When I upload multiple image. I get this error.

strncmp() expects parameter 1 to be string array given

my blade

<form action="{{ route('design-studios.store') }}" method="post" enctype="multipart/form-data">
    @csrf
    <div class="form-group">
        <label for="title">Title</label>
        <input type="text" class="form-control" id="title" name="title" value="{{ old('title') }}">
    </div>
   //......
    <div class="form-group">
        <fieldset class="border p-3">
            <legend>Slideshow</legend>
            <div class="form-group">
                <label for="sliders">Image</label>
                <input id="sliders" name="sliders[]" type="file" multiple class="form-control">
            </div>
        </fieldset>
    </div>
</form>

My Controller.

public function store(Request $request)
{
    $design_studio = new DesignStudio;
    $design_studio->user_id = 1;
    $design_studio->title = $request->title;
    $design_studio->lang = $request->lang;
    $design_studio->body = $request->body;
    if($request->has('image')) {
        $image = $request->file('image');
        $filename = $image->getClientOriginalName();
        $image->move(public_path('images/design-studio'), $filename);
        $design_studio->image = $request->file('image')->getClientOriginalName();
    }
    if ($sliders = $request->file('sliders')) {
        foreach ($sliders as $slider) {
            $filename = $slider->getClientOriginalName();
            $slider->move(public_path('images/design-studio'), $filename);
             $design_studio->sliders = $slider->getClientOriginalName();
        }
    }
    $design_studio->save();
    $design_studio->categories()->attach($request->category);
    return redirect()->route('design-studios.index');
}

My Model

protected $casts = [
    'sliders' => array()
];

I get this error.

strncmp() expects parameter 1 to be string array given

0 likes
8 replies
shahr's avatar
Level 10

I changed the codes

if ($sliders = $request->file('sliders')) {
    foreach ($sliders as $slider) {
        $filename = $slider->getClientOriginalName();
        $slider->move(public_path('images/design-studio'), $filename);
        $design_studio->sliders = $request->file('sliders')->getClientOriginalName();
    }
}

But I get this error

Call to a member function getClientOriginalName() on array

Snapey's avatar
if ($sliders = $request->file('sliders')) {
    foreach ($sliders as $slider) {
        $filename = $slider->getClientOriginalName();
        $slider->move(public_path('images/design-studio'), $filename);

	// what are you trying to do with this line;
        $design_studio->sliders = $request->file('sliders')->getClientOriginalName();

	// inside the loop you are working with $slider
        // how are you trying to store each of the multiple images in the database?
    }
}
shahr's avatar
Level 10

I write this after foreach and I uploaded 7 images.

foreach ($sliders as $slider) {
    dd($slider);

dd

shahr's avatar
Level 10

Answer my question.

How to upload multiple files and save in database.

shahr's avatar
Level 10

How to upload multiple files and save in database.

Please or to participate in this conversation.