What is SWFUpload?
SWFUpload is a library that allows to our website’s users to upload files to the server, using a combination of Flash and JavaScript.
Download library
The form
application/views
<?php echo form_open('process_form/process'); // Here we put the controller's URL and the function which will process the form?> <div> <?php echo form_label('File:','file'); $data = array( 'id' => 'txtFileName', 'value' => '', 'size' => 50, 'disabled' => 'disabled', 'style' => 'border: solid 1px; background-color: #FFFFFF;'); echo form_input($data); //Insert the text field which will hold the file anem once it is uploaded ?> <span id="spanButtonPlaceholder"></span> (20 MB max) </div> <div id="fsUploadProgress"></div> <input type="hidden" name="hidFileID" id="hidFileID" value="" /> <br /> <?php $extra = 'id="btnSubmit"'; echo form_submit('upload','Send',$extra); echo form_close(); ?> <!-- Add JavaScript files for SWFUpload --> <script type="text/javascript" src="<?php echo base_url();?>js/swfupload/swfupload.js"></script> <script type="text/javascript" src="<?php echo base_url();?>js/swfupload/handlers.js"></script> <script type="text/javascript" src="<?php echo base_url();?>js/swfupload/fileprogress.js"></script> <script type="text/javascript"> var swfu; window.onload = function () { swfu = new SWFUpload({ // Backend settings upload_url: "<?php echo base_url();?>process_form/upload", file_post_name: "resume_file", // Flash file settings file_size_limit : "20 MB", //File size limit file_types : "*.jpg", // or you could use something like: "*.doc;*.wpd;*.pdf", file_types_description : "Image Files", file_upload_limit : 0, file_queue_limit : 1, // Event handler settings swfupload_loaded_handler : swfUploadLoaded,file_dialog_start_handler: fileDialogStart, file_queued_handler : fileQueued, file_queue_error_handler : fileQueueError, file_dialog_complete_handler : fileDialogComplete, //upload_start_handler : uploadStart, // I could do some client/JavaScript validation here, but I don't need to. swfupload_preload_handler : preLoad, swfupload_load_failed_handler : loadFailed, upload_progress_handler : uploadProgress, upload_error_handler : uploadError, upload_success_handler : uploadSuccess, upload_complete_handler : uploadComplete, // Button Settings button_image_url : "<?php echo base_url();?>img/upload_flash_button_61x22.png", button_placeholder_id : "spanButtonPlaceholder", button_width: 61, button_height: 22, // Flash Settings flash_url : "<?php echo base_url();?>swf/swfupload/swfupload.swf", flash9_url : "<?php echo base_url();?>swf/swfupload/swfupload_fp9.swf", custom_settings : { progress_target : "fsUploadProgress", upload_successful : false }, // Debug settings debug: false }); }; </script>The controller
<?php class process_form extends Controller { public function process() { ... //Here we take the file's name $file_name = $this->input->post('hidFileID'); //Once we have the file's name, we could insert into the database //or whatever is needed ... } public function upload() { $config['upload_path'] = "path/to/the/folder/for/the/file/"; $config['allowed_types'] = 'jpg'; $size_mb = 20; //Max file size allowed in MB $config['max_size'] = $size_mb * 1024; // $this->load->library('upload'); $this->upload->initialize($config); if (!$this->upload->do_upload('resume_file')) { $this->data["params"]["error"] = array('error_upload' => $this->upload->display_errors()); echo $this->upload->display_errors(); } else { $uploaded_file = $this->upload->data(); //Return to the form the final name of the file once it was uploaded echo $uploaded_file["file_name"]; } } }