We have a custom codeigniter framework developed in last 2 years.
We need a simple, clean and very stable tool, that help us uploading a video large file (1.5 GB max) in our video cdn. We have a distributed video storage network and we need your help to build a friendly ajaxify user interface in order to upload video files.
Our big goal:
An youtube approach of their upload system in small scale
Which are the main aspects of our request, and the most important too:
1. The Upload system be compatible with html4/html5.
2. The Upload system be resumable
3. Java Applets is not an option for us
4. HTML5/PHP/Jquery/Ajax/ or HTML5 + Node.js + [url removed, login to view]
What we need from you:
- a basic html form (without css styling)
- the user can select just only one video file from pc (we don't want the html page refresh after selecting the file)
- an ajax function will check the file to meet all the requirements we set up in the config var structure
- if the size of the selected file is less 1.5 gb (or maybe another value) and if it has one of the allowed extension, the upload process will start
- we want a tracking percent indicator
- saving the file (it's very important this aspect) via ftp (we don't want java applet). It's not a problem if, in first step, the video file is uploaded to the main server and after that, the file be moved to the ftp address specified in the config file.
- when the file is saved via ftp, we need a callback with the original filename, and the new filename (adding a timestamp sufix to the orginal file name) - these two names will help us to save and identify the video in our database)
- it's important to us to find a solution for a resumable upload system, because the file size is quite large. Maybe the chunk method is a good choice.
- it's mandatory for our video cdn, the upload speed be restricted to a max allowed value
- if you can write the code directly for the latest codeigniter framework it will be great. Otherwise, we can implement it in our framework.
Example of a well organized project structure:
- controller/[url removed, login to view] (for the main ajax calls)
- controller/[url removed, login to view] (for the main functions)
- helpers/[url removed, login to view] (for other public function that the main controller might need)
- views/[url removed, login to view] (for the layout)
Just an example of a config structure for the upload system:
$config['ftp_hostname'] = 'http://127.0.0.1';
$config['ftp_username'] = 'root';
$config['ftp_password'] = 'root_pass';
$config['ftp_port'] = '21';
$config['ftp_remotepath'] = 'home/myuser/uploads/videos/'; // the remote path where the video file will be saved
$config['vid_extensions'] = array('avi','mpg','mp4','flv','f4v');
$config['vid_maxsize'] = 1.5 * 1000 * 1024 ; // 1,5 gb
$config['vid_maxspeed'] = '450'; // kb/s
$config['vid_newfilesuffix'] = time(); // a timestamp to be added to the end of the original file name
Please keep in mind, that all the config values will be configured dynamically from the inside of our app, pulling out the data from our databases system.
I really hope that anybody can help us with a good and clean solution. In short time. we might have another set of tasks and we want to keep in touch with you.
My name is Rohit, I have worked on distributed systems and working on cloud application development. I did project which requires to store large data file into different servers.