Easy-to-follow video tutorials help you learn software, creative, and business skills.Become a member

Uploading images with the File Uploading class

From: Up and Running with PHP CodeIgniter

Video: Uploading images with the File Uploading class

File uploads can be a pain, but CodeIgniter tries to eliminate some of the more obnoxious parts using the file uploading class which is especially helpful for images. File uploads consist of the following process. First, the file form element is displayed to the user. Then, the form is submitted and the file is uploaded. Based on file upload preferences such as image height, width or maximum size, the file is validated. When validation is past, the file metadata is available for use. I'm going to allow users to upload cover images of the back issues. First, switch to a terminal and navigate to the root directory of your CodeIgniter installation, verify that you're in the right place. Next, make a directory that you can use to upload files to. Mkdir, space, upload.

Uploading images with the File Uploading class

File uploads can be a pain, but CodeIgniter tries to eliminate some of the more obnoxious parts using the file uploading class which is especially helpful for images. File uploads consist of the following process. First, the file form element is displayed to the user. Then, the form is submitted and the file is uploaded. Based on file upload preferences such as image height, width or maximum size, the file is validated. When validation is past, the file metadata is available for use. I'm going to allow users to upload cover images of the back issues. First, switch to a terminal and navigate to the root directory of your CodeIgniter installation, verify that you're in the right place. Next, make a directory that you can use to upload files to. Mkdir, space, upload.

Next, set the permissions on that directory. Chmod 755 is a best practice. In a worst-case scenario, use 777 but this is almost never necessary and not recommended, as it's a big security risk. Now that the designation exists, I can go back to the IDE. Open up the magazine controller, I'm going to create a configuration array for file uploads. This also handles validation so, this part is fairly important. There's a comprehensive list of all the options in the user guide at ellislab.com. So, starting with configuration array, config equals array. The first step is the upload underscore_path which is just upload. Next, specify the allowed file extension types.

Allowed_types and we'll set that to gif, jpg and png. Then, the maximum file size in kilobytes, max_size I'll set it to 250. The maximum width and pixels max_width 1920 and maximum height max_height and we'll set that to 1080. Finally, the upload library can be loaded with a configuration, this, load, library, upload and pass it to config.

Then navigate to the form validation. The form validator doesn't actually check file uploads, which is a bit goofy. Instead, I'm going to have to explicitly specify a file upload check, using do_upload and the name of the form element. If you're uploading multiple files, you will have to do multiple do_uploads. If you leave out the name of the form element, it won't work. Finally, I'm going to make file upload optional, by checking the files array, then preforming validation. As ugly as this looks, this is the recommended method. So, I'm going to navigate to the form validation run. I'll start with check_file_upload equals false.

if is set, the FILES super global, issue_cover error and files issue_cover error not equals 4, check_file_upload equals true. Then, we'll change the if on the validation run. If the form validation fails or check_file_upload and not this, upload, do_upload using the key issue_cover, we'll wrap this whole section in parenthesis and save.

The last piece of the puzzler for the controller, is what to do with the uploaded file. Just before issue_save, get the uploaded file metadata, upload_data equals this, upload_data. If it exists, set the issue_cover to the file name. If is set, upload_data, key, file_name, issue, issue_cover equals upload_data, file_name.

Save the controller, then go to the magazine form view. Immediately following the echoed validation errors, I'll need to explicitly display the upload errors. Yes, it's separate from the form upload. PHP echo, this, upload, display_errors. And it's going to take two arguments which is the opening, div, class, equals alert, alert-error and close and followed by the closed div. Close the PHP tag, and then I will need to switch the form open to a form open multi part to handle the uploaded files.

Before the Submit button, let's create the form element for the file upload. Div, PHP echo form_label, cover scan, then issue_cover is the name. Close the PHP. And PHP echo. Then I'm going to use the form helper, form_upload, with the name of the field as an argument. form_upload, issue_cover. Save, then go back to the browser. Let's click, Add, to see the new file form.

Let's create issue number five of Sandy Shores, with a publish date of 2013-06-01. Click save and it should be successful as the file upload is optional. Let's go back to Add, and add issue number two of Sandy Shores with a date 2013-02-01, but this time I'll upload. Go to Assets > NotAnImage.txt. Click Open, and Save. It'll be correctly rejected as disallowed.

Finally upload the JPEG version of issue number two And that should work, success. Check the upload directory as well. Now, if I go back to the magazine list, I can see that there's a duplicate entry for issue number two and I can't see the covers. Mm-hm, maybe I should do something about that.

Show transcript

This video is part of

Image for Up and Running with PHP CodeIgniter
Up and Running with PHP CodeIgniter

23 video lessons · 5045 viewers

Jon Peck
Author

 

Start learning today

Get unlimited access to all courses for just $25/month.

Become a member
Sometimes @lynda teaches me how to use a program and sometimes Lynda.com changes my life forever. @JosefShutter
@lynda lynda.com is an absolute life saver when it comes to learning todays software. Definitely recommend it! #higherlearning @Michael_Caraway
@lynda The best thing online! Your database of courses is great! To the mark and very helpful. Thanks! @ru22more
Got to create something yesterday I never thought I could do. #thanks @lynda @Ngventurella
I really do love @lynda as a learning platform. Never stop learning and developing, it’s probably our greatest gift as a species! @soundslikedavid
@lynda just subscribed to lynda.com all I can say its brilliant join now trust me @ButchSamurai
@lynda is an awesome resource. The membership is priceless if you take advantage of it. @diabetic_techie
One of the best decision I made this year. Buy a 1yr subscription to @lynda @cybercaptive
guys lynda.com (@lynda) is the best. So far I’ve learned Java, principles of OO programming, and now learning about MS project @lucasmitchell
Signed back up to @lynda dot com. I’ve missed it!! Proper geeking out right now! #timetolearn #geek @JayGodbold
Share a link to this course

What are exercise files?

Exercise files are the same files the author uses in the course. Save time by downloading the author's files instead of setting up your own files, and learn by following along with the instructor.

Can I take this course without the exercise files?

Yes! If you decide you would like the exercise files later, you can upgrade to a premium account any time.

Become a member Download sample files See plans and pricing

Please wait... please wait ...
Upgrade to get access to exercise files.

Exercise files video

How to use exercise files.

Learn by watching, listening, and doing, Exercise files are the same files the author uses in the course, so you can download them and follow along Premium memberships include access to all exercise files in the library.


Exercise files

Exercise files video

How to use exercise files.

For additional information on downloading and using exercise files, watch our instructional video or read the instructions in the FAQ.

This course includes free exercise files, so you can practice while you watch the course. To access all the exercise files in our library, become a Premium Member.

Are you sure you want to mark all the videos in this course as unwatched?

This will not affect your course history, your reports, or your certificates of completion for this course.


Mark all as unwatched Cancel

Congratulations

You have completed Up and Running with PHP CodeIgniter.

Return to your organization's learning portal to continue training, or close this page.


OK
Become a member to add this course to a playlist

Join today and get unlimited access to the entire library of video courses—and create as many playlists as you like.

Get started

Already a member?

Become a member to like this course.

Join today and get unlimited access to the entire library of video courses.

Get started

Already a member?

Exercise files

Learn by watching, listening, and doing! Exercise files are the same files the author uses in the course, so you can download them and follow along. Exercise files are available with all Premium memberships. Learn more

Get started

Already a Premium member?

Exercise files video

How to use exercise files.

Ask a question

Thanks for contacting us.
You’ll hear from our Customer Service team within 24 hours.

Please enter the text shown below:

The classic layout automatically defaults to the latest Flash Player.

To choose a different player, hold the cursor over your name at the top right of any lynda.com page and choose Site preferencesfrom the dropdown menu.

Continue to classic layout Stay on new layout
Exercise files

Access exercise files from a button right under the course name.

Mark videos as unwatched

Remove icons showing you already watched videos if you want to start over.

Control your viewing experience

Make the video wide, narrow, full-screen, or pop the player out of the page into its own window.

Interactive transcripts

Click on text in the transcript to jump to that spot in the video. As the video plays, the relevant spot in the transcript will be highlighted.

Are you sure you want to delete this note?

No

Your file was successfully uploaded.

Thanks for signing up.

We’ll send you a confirmation email shortly.


Sign up and receive emails about lynda.com and our online training library:

Here’s our privacy policy with more details about how we handle your information.

Keep up with news, tips, and latest courses with emails from lynda.com.

Sign up and receive emails about lynda.com and our online training library:

Here’s our privacy policy with more details about how we handle your information.

   
submit Lightbox submit clicked
Terms and conditions of use

We've updated our terms and conditions (now called terms of service).Go
Review and accept our updated terms of service.