Upload video file with Codeigniter - php

I have problem for upload video file with codeigniter 3. We use Linux Server Ubuntu 15.04. This is script controller for upload:
$config['upload_path'] = './uploads/videos/';
$config['allowed_types'] = 'mp4';
$config['max_size'] = 0;
$config['overwrite'] = FALSE;
$config['remove_spaces'] = TRUE;
and configuration php.ini:
post_max_size = 20000M
upload_max_filesize = 20000M
but we still error message:
The uploaded file exceeds the maximum allowed size in your PHP configuration file

Try this one
Inside the config/mimes.php add the missing file type you are going to uplaod, something like bellow.
'mpeg' => array('video/mpeg', 'video/quicktime'),
'mpg' => array('video/mpeg', 'video/quicktime'),
'mp4' => array('video/mp4', 'video/quicktime'),
'mpe' => array('video/mpeg', 'video/quicktime'),
'qt' => 'video/quicktime',
'mov' => array('video/quicktime', 'video/mp4'),
'avi' => array('video/avi', 'video/x-msvideo'),

Related

uploading docx file in codeigniter

mimes.php
'doc' => array('application/msword', 'application/vnd.ms-office'),
'docx' => array('application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/zip'),
'dot' => array('application/msword', 'application/vnd.ms-office'),
'dotx' => array('application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/zip', 'application/msword'),
'xlsx' => array('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/zip', 'application/vnd.ms-excel', 'application/msword', 'application/x-zip'),
'word' => array('application/msword', 'application/octet-stream'),
var_dump is giving following response
string(24)"application/octet-stream"
This is my some controller code
if(!empty($_FILES['file_name']))
{
// Profile Pic upload
$config = array();
$config['upload_path'] = 'uploads/file/';
$config['allowed_types'] = 'gif|jpg|png|jpeg|pdf|csv|txt|doc|docx|rar|zip|svg|xml|GIF|JPG|PNG|JPEG|PDF|DOC|XML|DOCX|xls|xlsx|CSV|TXT|SVG';
$config['max_size'] =10000;
$config['max_width'] = 1024;
$config['max_height'] = 1024;
$config['file_ext_tolower'] = true;
$this->load->library('upload', $config, 'profilepic');
$this->profilepic->initialize($config);
if(!$profile_pic = $this->profilepic->do_upload('file_name'))
{
$this->session->set_flashdata('message', $this->upload->display_errors());
}
else
{
$imgname = $this->profilepic->data();
$imgpath = 'uploads/file/'.$imgname['file_name'];
$data['file_name'] = $imgpath;
}
}else{
$this->session->set_flashdata('message',
'Please
I tried all the possible solution available but not able to succeed.Please suggest.
I missed docx in controller and adding 'application/octet-stream' in docx mimes is solving problem.Thanks for your effort and time.

how to get length of audio file in codeigniter while upload file

I have an issue related file upload,
I want to get the audio file's duration length in minutes.
While I am uploading that file, I am able to get all the details like size, type, max-length, file name but not the duration of that audio file.
$config['upload_path'] = './uploads/songs/';
$config['allowed_types'] = 'gif|jpg|png|mov|mp3|aiff|mpeg|zip';
$config['max_size'] = '30000';
$config['max_width'] = '1024';
$config['max_height'] = '1024';
$config['file_ext_tolower'] = 'TRUE';
$config['remove_spaces'] = TRUE;
$this->load->library('upload', $config);
$uploadSong = $this->upload->data();
print_r($uploadSong);
after print_r am getting this output of uploaded file
Array (
[file_name] => song_one1.mp3
[file_type] => application/octet-stream
[file_path] => C:/xampp/htdocs/rockherogame/uploads/songs/
[full_path] => C:/xampp/htdocs/rockherogame/uploads/songs/song_one1.mp3
[raw_name] => song_one1
[orig_name] => song_one.mp3
[client_name] => song_one.mp3
[file_ext] => .mp3
[file_size] => 4059.28
[is_image] =>
[image_width] =>
[image_height] =>
[image_type] =>
[image_size_str] => )
please help me understand how to get duration of file?
Thanks in advance
This should work for you, notice the getduration function: http://www.zedwood.com/article/127/php-calculate-duration-of-mp3
Duration of a audio file needs to be calculated.
here is a good example showing how to do the same in php
http://www.zedwood.com/article/127/php-calculate-duration-of-mp3
you can also Install and use getid3.
code snippet here

Uploading CSV file in CodeIgniter 3

I'm having issues uploading a CSV file in codeigniter.
I am getting the error:
array(1) { ["error"] => string(64) "The filetype you are attempting to upload is not allowed." }
Ok!!
but I am setting allowed_types like this:
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'csv';
$this->load->library('upload', $config);
and i have this in mimes.php:
'csv' => array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel', 'text/plain'),
So any ideas why I am still getting this error?
$_FILES dump:
Array
(
[name] => default questions.csv
[type] => application/force-download
[tmp_name] => /tmp/phpbkXxUd
[error] => 0
[size] => 5899
)
Try this
$config['allowed_types'] = '*';
This should work
.Also check your upload.php or mimes.php. Use the latest one.

issue with uploading mp4 video file even after changing the mime type to 'mp4' => video/mp4 and giving file type as mp4

I am trying to upload a mp4 video file using codeigniter file upload class as follows,
function do_upload_video()
{
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'mp4';
$config['mimes'] = 'mp4';
$config['max_size'] = '1000000';
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload())
{
$error = array('error' => $this->upload->display_errors());
$data['main_content'] ='admin/elements/add_video';
$this->load->view('includes/template', $data);
}
else
{
$chapter_id=$this->session->userdata('chapter_id');
redirect("/admin/elements/".$chapter_id);
}
}
mime type given in mimes.php
'mp4' => 'video/mp4'
further, I have also increased the file size in php.ini post_upload_max size and upload_max_filesize to sufficient level.
However when i am trying to upload a sample video file of size 8 MB with .mp4 extension it is showing error as "The filetype you are attempting to upload is not allowed".
Array ( [video] => Array ( [name] => daddyshome_paLrcx9H.mp4 [type]=>video/mp4 [tmp_name] => /tmp/php3xrVFp [error] => 0 [size] => 7350845 ) )
getting this on print_r($_FILES)
Set MIME type for MP4 in mime.php
'mp4' => array('video/mp4', 'application/octet-stream'),
I removed
$config['mimes'] = 'mp4';
from my controller and it is working properly.

how to get the new generated file name by codigniter in case if the file already exists

how to get the new generated file name by codigniter in case if the file already exists?
i am inserting image file into my project (uploads) folder and its name i.e image.png into my database table.
say car.png is the image which exists in my uploads folder. if again i am trying to upload the car.png image, then currently it is saving like car1.png into my uploads folder without replacing the older image. i want to get the new image name i.e. car1.png to save into my db but it actually saving the name which i am sending from my form i.e car.png.
To get the file name i used
$img1=$_FILES['img1']['name'];
//this gives me the name of file which i am uploading from my form i.e car.png
Please help me to solve my problem. Please....
It seems that you're not using file upload class from codeingiter. I advise you to use it because it will solve your problem.
If you a upload a file with the same name and in the options you passed you set overwrite to FALSE, codeigniter will rename your car.png to car1.png (or the next number that's available).
Then if upload was successful it will return an array with all the data related to that file
Array
(
[file_name] => mypic.jpg
[file_type] => image/jpeg
[file_path] => /path/to/your/upload/
[full_path] => /path/to/your/upload/jpg.jpg
[raw_name] => mypic
[orig_name] => mypic.jpg
[client_name] => mypic.jpg
[file_ext] => .jpg
[file_size] => 22.2
[is_image] => 1
[image_width] => 800
[image_height] => 600
[image_type] => jpeg
[image_size_str] => width="800" height="200"
)
As you can see, this way you will get the name of the file even if it changed.
You can read more about File Upload Class and how to implement it here:
http://ellislab.com/codeigniter/user-guide/libraries/file_uploading.html
EDIT2
YOu have to name your input files on your view userfile1, userfile2, userfile3 and so on
class Upload extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->helper(array('form', 'url'));
}
function index()
{
$this->load->view('upload_form', array('error' => ' ' ));
}
function do_upload(){
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$this->load->library('upload', $config);
foreach($_FILES as $key => $value){
if ( ! $this->upload->do_upload($key)){
$error = array('error' => $this->upload->display_errors());
$this->load->view('upload_form', $error);
}else{
//This $data is the array I described before
$data = array('upload_data' => $this->upload->data());
//So if you this you will get the file name
$filename = $data['upload_data']['file_name'];
}
}
$this->load->view('upload_success', $data);
}
}
?>

Categories