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
Related
The file path of the file I'm trying to upload is not stored properly.
My only problem now is, instead of storing this path:
C:/xampp/htdocs/dev/csbrms/upload/file.xlsx
it only stores:
C:/xampp/htdocs/dev/csbrms/upl
this is my code
view.php
<input type = "file" name = "userfile" id="userfile"/>
controller.php
$upload_data = $this->upload->data();
$file_name = $upload_data['file_name'];
$data = array(...
'file_path' => $file_name,
);
model.php
function add_records($data){
try {
$sql = "CALL `sp_add_user_request`(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
$result = $this->csbrms->query($sql,$data); // $data included 3 param and binding & query to db
$this->csbrms->close();
} catch (Exception $e) {
echo $e->getMessage();
}
return $result;
}
You are using file_path to store your file info, whereas you probably want to use full_path which will include the path and filename.
$file = $upload_data['full_path'];
You can see all the return fields for the helper function in the docs here:
http://www.codeigniter.com/user_guide/libraries/file_uploading.html#CI_Upload::data
But here is the example return array with the fields you can use:
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"
)
Hope that helps,
Paul.
Check your field size in database. The path is being truncated due to the size of the column/field in the table where the path is being stored.
I'm using codeigniter upload class and I'm trying to upload a csv file.
Here is my PHP code :
public function upload(){
$config['upload_path'] = './csv/';
$config['allowed_types'] = 'csv';
$config['max_size'] = 10240;
$this->upload->initialize($config);
if (!$this->upload->do_upload('file')){
echo "<pre>";
print_r($this->upload->data());
echo "</pre>";
die();
$this->session->set_flashdata('upload_error', $this->upload->display_errors());
redirect('/Customers');
}else{
$this->session->set_flashdata('upload_success', 'Customer list successfully uploaded!');
redirect('/Customers');
}
}
when I upload my csv file I get :
Array
(
[file_name] => mayfile.csv
[file_type] => text/x-fortran
[file_path] => /home/public_html/....
[file_ext] => .csv
[file_size] => 7842
[is_image] =>
[image_width] =>
[image_height] =>
[image_type] =>
[image_size_str] =>
)
The type should be text/csv not text/x-fortran why is that happening?
This is a preview of the csv file data I have uploaded:
[
Thank you
I believe this is a duplicate of:
Detecting a mime type fails in php
In it, the answer states:
Apparently, it scans the start of the file looking for lines that begin with a single C letter plus spaces, which seem to be a Fortran style comment. Thus the false positive:
somecolumn;
C F;
I would recommend reading that answer for further instructions. In this particular case, I'd recommend checking the extension if the mime is returned as Fortran to ensure it's not a CSV. Unfortunately there isn't a cleaner way that I know of.
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.
What I am trying to do is after uploading the file parse the cvs file to the screen with print_r so I can do some things with it. I cannot seem to figure out how you access the file name with the $data. I have tried several things like $file_name, $data['file_name], and $this->data->$file_name. The relevant part is on line 37.
Not sure what I am doing wrong. I have looked at the code igniter documentation for the uploader library but it doesn't be sufficient to answer my question. Thanks for any help!
<?php
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'] = 'csv';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$this->load->library('upload', $config);
$this->load->library('getcsv');
if ( ! $this->upload->do_upload())
{
$error = array('error' => $this->upload->display_errors());
$this->load->view('upload_form', $error);
}
else
{
$data = array('upload_data' => $this->upload->data());
$this->load->view('upload_success', $data);
echo 'The file name is: '.$file_name;
}
}
}
?>
The filename can be anything you want. This is clearly in the documentation, you might've been reading the wrong page or something:
http://ellislab.com/codeigniter%20/user-guide/libraries/file_uploading.html
file_name: If set CodeIgniter will rename the uploaded file to this name. The extension provided in the file name must also be an allowed file type.
OR:
You can get it from $this->upload->data(), which is an array.
$this->upload->data()
This is a helper function that returns an array containing all of the data related to the file you uploaded. Here is the array prototype:
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"
)
Use the following code :
if($this->upload->do_upload($file)){
//Get uploaded file data here
$allData=$this->upload->data();
$myFile = $allData['file_name'];
}
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);
}
}
?>