Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

keep getting upload php $_FILES error = 3 (partially uploaded)

I am using dropzone extension for Yii framework to upload some files by registered users. Everything working well but some users for some files that they trying to upload it's return error = 3 which it's happens when the uploaded file was only partially uploaded.

$file_error = $_FILES['Project']['error']['file'];
if ($file_error != 0) {
            mail('[email protected]', 'fileError',json_encode($_FILES['Project']));
}

i'am receiving a lot of emails from this function

JSON received

{"name":{"file":"3.jpg"},"type":{"file":""},"tmp_name":{"file":""},"error":{"file":3},"size":{"file":0}}

how can i debug this error and know the cases that make this error happened ?

This error happened 1- if the user refresh the page while uploading. 2- if the user cancel the upload (there is no cancel option in my site). 3- if the internet connection lost while uploading.

I'm still looking for other cases.

like image 738
Khaled Hasania Avatar asked Aug 24 '14 20:08

Khaled Hasania


People also ask

What is $_ files in PHP?

PHP $_FILES The global predefined variable $_FILES is an associative array containing items uploaded via HTTP POST method. Uploading a file requires HTTP POST method form with enctype attribute set to multipart/form-data.

How can I upload more than 2 MB in PHP?

by default PHP will not handle file uploads larger than 2MB, if one requires PHP to handle larger files then one must set upload_max_filesize and post_max_size in your php. ini file to be larger than 2MB.

How can we get the error when there is a problem to upload a file?

You may get an error message when you upload a file in the wrong format. Make sure you're using a supported file type. You can also try changing your codecs or editing software.

How will you access the error code associated with file upload in PHP?

Error Messages Explained ¶ The error code can be found in the error segment of the file array that is created during the file upload by PHP. In other words, the error might be found in $_FILES['userfile']['error'] . Value: 0; There is no error, the file uploaded with success.


2 Answers

in my case, the "partially uploaded" problem happened when uploading medium/large files using a slow internet connection.

The solution that works for me was set some Apache configurations in httpd.conf file:

TimeOut 300
KeepAliveTimeout 10
RequestReadTimeout handshake=0 header=20-1200,MinRate=200 body=20,MinRate=200

I hope it help.

like image 171
Felipe Q. B. Avatar answered Oct 16 '22 15:10

Felipe Q. B.


As php documentation says, this error is

UPLOAD_ERR_PARTIAL is given when the mime boundary is not found after the file data. A possibly cause for this is that the upload was cancelled by the user (pressed ESC, etc).

Also there are some more variants to check:

  1. Permissions are wrong (i doubt, cause it will break all users).

  2. Not enough free space on server.

  3. This error occures when uploading from iOS.

  4. This error can occure when uploading folder (due to browser limitations). On Mac OSX it occures 100%.

So this is possible errors to check. Hope this will help.

like image 29
ineersa Avatar answered Oct 16 '22 15:10

ineersa