To determine whether upload was successful you should check for error being UPLOAD_ERR_OK instead of checking the file size. When nothing is chosen to be uploaded, the key in $_FILES will still be there, but it should have error equal UPLOAD_ERR_NO_FILE.
$_FILES
$HTTP_POST_FILES [kullanımdan kalktı]
$_FILES -- $HTTP_POST_FILES [kullanımdan kalktı] — HTTP Dosya Yükleme değişkenleri
Açıklama
HTTP POST yönetimi kullanılarak geçerli betiğe yüklenen bütünleşik öğe dizisi.
$HTTP_POST_FILES aynı başlangıç bilgisini içerir, fakat bir süper küresel değildir. ($HTTP_POST_FILES ve $_FILES farklı değişkenlerdir ve PHP de bu şekilde ele alır.)
Sürüm Bilgisi
| Sürüm: | Açıklama |
|---|---|
| 4.1.0 | $_FILES ortaya çıkmış ve $HTTP_POST_FILES kullanımdan kaldırılmıştır. |
Notlar
Bilginize: Bu bir süper küreseldir. Yani bir betiğin her yerinde geçerlidir. Değişkene işlevler ve yöntemlerin içinden erişmek için global $değişken; deyimine gerek yoktur.
Ayrıca Bakınız
- move_uploaded_file() - Karşıya yüklenen bir dosyayı yeni bir yere taşır
- Dosya Yüklemelerini İşlemek
$_FILES
mwgamera at gmail dot com
13-Aug-2009 12:40
13-Aug-2009 12:40
calurion at gmail dot com
29-Jun-2009 11:51
29-Jun-2009 11:51
For some reason when I tried to check if $_FILES['myVarName'] was empty() or !isset() or array_key_exists(), it always came back that the file was indeed in the superglobal, even when nothing was uploaded.
I wonder if this is a result of enctype="multipart/form-data".
Anyways, I solved my issue by checking to make sure that $_FILES['myVarName']['size'] > 0
dewi at dewimorgan dot com
18-Mar-2009 06:35
18-Mar-2009 06:35
The format of this array is (assuming your form has two input type=file fields named "file1", "file2", etc):
Array
(
[file1] => Array
(
[name] => MyFile.txt (comes from the browser, so treat as tainted)
[type] => text/plain (not sure where it gets this from - assume the browser, so treat as tainted)
[tmp_name] => /tmp/php/php1h4j1o (could be anywhere on your system, depending on your config settings, but the user has no control, so this isn't tainted)
[error] => UPLOAD_ERR_OK (= 0)
[size] => 123 (the size in bytes)
)
[file2] => Array
(
[name] => MyFile.jpg
[type] => image/jpeg
[tmp_name] => /tmp/php/php6hst32
[error] => UPLOAD_ERR_OK
[size] => 98174
)
)
Last I checked (a while ago now admittedly), if you use array parameters in your forms (that is, form names ending in square brackets, like several file fields called "download[file1]", "download[file2]" etc), then the array format becomes... interesting.
Array
(
[download] => Array
(
[name] => Array
(
[file1] => MyFile.txt
[file2] => MyFile.jpg
)
[type] => Array
(
[file1] => text/plain
[file2] => image/jpeg
)
[tmp_name] => Array
(
[file1] => /tmp/php/php1h4j1o
[file2] => /tmp/php/php6hst32
)
[error] => Array
(
[file1] => UPLOAD_ERR_OK
[file2] => UPLOAD_ERR_OK
)
[size] => Array
(
[file1] => 123
[file2] => 98174
)
)
)
So you'd need to access the error param of file1 as, eg $_Files['download']['error']['file1']
andrewpunch at bigfoot dot com
17-Jan-2009 08:16
17-Jan-2009 08:16
If $_FILES is empty, even when uploading, try adding enctype="multipart/form-data" to the form tag and make sure you have file uploads turned on.
