Reputation: 185
all. I am trying to learn Laravel and I am working on uploading an image. I get the following error:
"Call to a member function getClientOriginalName() on a non-object"
I am using these packages:
"anahkiasen/former": "dev-master",
"intervention/image": "dev-master",
"intervention/imagecache": "2.*"
After using SO, I have verified the following are NOT contributing to the error above:
My form is:
<form enctype="multipart/form-data" accept-charset="utf-8" class="form-horizontal" id="create_form" method="POST" action="/elements">
<div class="control-group"><label for="img[]" class="control-label">Upload Image</label><div class="controls"><input multiple="true" class="myclass" accept="image/gif|image/jpeg|image/png" id="img[]" type="file" name="img[]"></div></div>
<div class="form-actions"><input class="btn-large btn-primary btn" type="submit" value="Submit"> <input class="btn-large btn-inverse btn" type="reset" value="Reset"></div>
<input type="hidden" name="_token" value="B0AJ0Y5LMrMng6CsePeZfNSvRQ0KexowOGTK99Gm">
</form>
The code to generate the error is:
$image = Input::file('img');
$filename = $image->getClientOriginalName();
print_($filename);
If I print out the object using:
print_r($image);
...then I get:
Array
(
[0] => Symfony\Component\HttpFoundation\File\UploadedFile Object
(
[test:Symfony\Component\HttpFoundation\File\UploadedFile:private] =>
[originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private] => storageunit.jpg
[mimeType:Symfony\Component\HttpFoundation\File\UploadedFile:private] => image/jpeg
[size:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 8734
[error:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 0
[pathName:SplFileInfo:private] => /tmp/php9AU1OE
[fileName:SplFileInfo:private] => php9AU1OE
)
)
All of which looks correct to me, so I am stumped.
If anyone has any ideas as to what to try next, I would appreciate the help.
Upvotes: 4
Views: 20641
Reputation: 1
For me the only issue was the class file which the File Upload entity requires was missing.
I added this code and it worked,
use Illuminate\Http\UploadedFile;
Upvotes: 0
Reputation: 185
Doh!
"file" not "files"
{{
Former::file('img')
->label('Upload Image')
->class('myclass')
->accept('gif', 'jpg', 'png');
}}
Upvotes: 1
Reputation: 19549
Look at what's printed out. $image
is an array of objects, not an object. Try:
$filename = $image[0]->getClientOriginalName();
Upvotes: 8