Uploading larger/bigger files is difficult using http because it uses UDP protocol. However in shared hosting environment it is difficult to upload just 3-4 MB files. In order to uplaod larger document you can set upload_max_filesize and post_max_size in your htaccess file. But in order to update seamlessly you need to increase the execution time as well. Set the following values according to your choice. php_value upload_max_filesize 10M php_value post_max_size 11M php_value max_execution_time 600 php_value max_input_time 200 Note: Please make sure to use this .htaccess file in the same directory. Note: Always mention greater upload_max_size than post_max_size because a post contain additional data also. However it is totally based on your wish to use. Upload files using HTTP: Here goes the script move_uploaded_file($_FILES['userfile']['tmp_name'], 'path_to_directory/'.$_FILES['userfile']['name']); If this does not solve your problem then probably you need to “upload your file using ftp”. Here I am providing a simple code to upload your file using ftp. Upload files using FTP: Here goes the script $path = "path_to_directory/"; $ftp_server = "ftp.example.com"; $ftp_user = "USER"; $ftp_pass = "PASSWORD"; $file=$_FILES['userfile']['tmp_name']; $name=$_FILES['userfile']['name']; // set up a connection to ftp server $conn_id = ftp_connect($ftp_server); //check for connection error if(!$conn_id){ echo “connection failed”; } // ftp login with username and password $login_result = ftp_login($conn_id, $ftp_user, $ftp_pass); // check for login if (!$login_result) { echo "Attempted to connect to $ftp_server for user $ftp_user.... failed"; } // upload the file to the path specified $upload = ftp_put($conn_id, $paths.'/'.$name, $file, FTP_BINARY); ftp_close($conn_id); If you are having a shared hosting environment than probably your outbound ftp is disabled. In that case you need to upload using cURL. Yes cURL is a great library with great power. Almost all big site using cURL in some way. Check the following script. Upload files using cURL: Here is the simplest script $ch = curl_init(); $file = $_FILES['userfile']['tmp_name']; $fp = fopen($file, 'r'); curl_setopt($ch, CURLOPT_URL, 'ftp://USER:PASSWORD@ftp.example.com/'.$_FILES['userfile']['name']); curl_setopt($ch, CURLOPT_UPLOAD, 1); curl_setopt($ch, CURLOPT_INFILE, $fp); curl_setopt($ch, CURLOPT_INFILESIZE, filesize($file)); curl_exec ($ch); if you need to change the file permission after upload use chmod. As, chmod("path_to_file" ,0755); Upload checking could be done using php inbuilt funtion file_exists. As, file_exist($_SERVER[DOCUMENT_ROOT].'/path_to_file')
My personal experience as a programmer, system admin and database administratror.
Thursday, July 5, 2012
Uploding big file in php
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment