锟斤拷锟斤拷锟皆匡拷锟斤拷使锟矫伙拷锟较达拷锟侥憋拷锟酵讹拷锟斤拷锟斤拷锟侥硷拷锟斤拷锟斤拷 PHP 锟斤拷锟斤拷证锟斤拷锟侥硷拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷全锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷些锟斤拷锟较达拷锟皆硷拷锟侥硷拷锟较达拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷
PHP 锟杰癸拷锟斤拷锟斤拷锟轿猴拷锟斤拷锟皆凤拷锟斤拷 RFC-1867 锟斤拷准锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟� Netscape Navigator 3 锟斤拷锟斤拷锟竭版本锟斤拷锟斤拷锟剿诧拷锟斤拷锟斤拷 Microsoft Internet Explorer 3 锟斤拷锟竭革拷锟竭版本锟斤拷锟较达拷锟斤拷锟侥硷拷锟斤拷
Note: 锟斤拷氐锟斤拷锟斤拷锟�
锟斤拷锟斤拷锟� php.ini 锟斤拷 file_uploads锟斤拷upload_max_filesize锟斤拷upload_tmp_dirpost_max_size 锟皆硷拷 max_input_time 锟斤拷锟斤拷选锟筋。
锟斤拷注锟斤拷 PHP 也支锟斤拷 PUT 锟斤拷锟斤拷锟斤拷锟侥硷拷锟较达拷锟斤拷Netscape Composer 锟斤拷 W3C 锟斤拷 Amaya 锟酵伙拷锟斤拷使锟斤拷锟斤拷锟街凤拷锟斤拷锟斤拷锟斤拷锟斤拷锟�锟斤拷 PUT 锟斤拷锟斤拷锟斤拷支锟斤拷锟皆伙拷取锟斤拷锟斤拷锟斤拷息锟斤拷
Example #1 锟侥硷拷锟较达拷锟斤拷
锟斤拷锟斤拷锟斤拷锟铰斤拷锟斤拷一锟斤拷锟斤拷锟斤拷谋锟斤拷锟街э拷锟斤拷募锟斤拷洗锟斤拷锟�
<!-- The data encoding type, enctype, MUST be specified as below --> <form enctype="multipart/form-data" action="__URL__" method="POST"> <!-- MAX_FILE_SIZE must precede the file input field --> <input type="hidden" name="MAX_FILE_SIZE" value="30000" /> <!-- Name of input element determines name in $_FILES array --> Send this file: <input name="userfile" type="file" /> <input type="submit" value="Send File" /> </form>
锟斤拷锟较凤拷锟斤拷锟叫碉拷 __URL__ 应锟矫憋拷锟斤拷锟斤拷锟斤拷指锟斤拷一锟斤拷锟斤拷实锟斤拷 PHP 锟侥硷拷锟斤拷
MAX_FILE_SIZE 锟斤拷锟斤拷锟街段o拷锟斤拷位为锟街节o拷锟斤拷锟斤拷锟斤拷锟斤拷募锟斤拷锟斤拷锟斤拷侄锟街帮拷锟斤拷锟街滴拷锟斤拷锟斤拷募锟斤拷锟斤拷锟斤拷叽纭o拷锟斤拷嵌锟斤拷锟斤拷锟斤拷锟斤拷一锟斤拷锟斤拷锟介,PHP 也锟斤拷锟斤拷锟斤拷睢o拷锟斤拷锟斤拷锟斤拷锟剿匡拷锟皆硷拷锟狡癸拷锟斤拷锟斤拷锟矫o拷锟斤拷瞬锟揭革拷锟斤拷么锟斤拷锟斤拷锟斤拷锟斤拷璧诧拷锟斤拷募锟斤拷锟绞碉拷锟斤拷希锟絇HP 锟斤拷锟斤拷锟叫碉拷锟较达拷锟侥硷拷锟斤拷锟街碉拷遣锟斤拷锟绞э拷摹锟斤拷锟斤拷锟斤拷锟矫伙拷锟斤拷锟节憋拷锟叫硷拷锟较达拷锟斤拷目锟斤拷锟斤拷为锟斤拷锟斤拷锟皆憋拷锟斤拷锟矫伙拷锟节伙拷时锟斤拷却锟斤拷洗锟斤拷锟斤拷募锟街拷锟脚凤拷锟斤拷锟侥硷拷锟斤拷锟斤拷锟较达拷失锟杰碉拷锟介烦锟斤拷
Note:
要确锟斤拷锟侥硷拷锟较达拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷 enctype="multipart/form-data"锟斤拷锟斤拷锟斤拷锟侥硷拷锟较达拷锟斤拷锟剿★拷
全锟街憋拷锟斤拷 $_FILES 锟斤拷 PHP 4.1.0 锟斤拷锟斤拷冢锟斤拷诟锟斤拷锟侥版本锟斤拷锟斤拷 $HTTP_POST_FILES 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟较达拷锟斤拷锟侥硷拷锟斤拷息锟斤拷
锟斤拷锟较凤拷锟斤拷锟斤拷 $_FILES 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟绞撅拷锟斤拷锟斤拷羌锟斤拷锟斤拷募锟斤拷洗锟斤拷侄蔚锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟绞撅拷锟轿� userfile锟斤拷锟斤拷锟狡匡拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷
锟酵伙拷锟剿伙拷锟斤拷锟侥硷拷锟斤拷原锟斤拷锟狡★拷
锟侥硷拷锟斤拷 MIME 锟斤拷锟酵o拷锟斤拷锟斤拷锟斤拷锟斤拷锟结供锟斤拷锟斤拷息锟侥伙拷锟斤拷一锟斤拷锟斤拷锟斤拷锟斤拷"image/gif"锟斤拷锟斤拷锟斤拷锟斤拷 MIME 锟斤拷锟斤拷锟斤拷 PHP 锟剿诧拷锟斤拷锟斤拷椋拷锟剿诧拷要锟诫当然锟斤拷为锟斤拷锟斤拷锟街碉拷锟�
锟斤拷锟较达拷锟侥硷拷锟侥达拷小锟斤拷锟斤拷位为锟街节★拷
锟侥硷拷锟斤拷锟较达拷锟斤拷锟节凤拷锟斤拷舜锟斤拷锟斤拷锟斤拷时锟侥硷拷锟斤拷锟斤拷
锟酵革拷锟侥硷拷锟较达拷锟斤拷氐锟�锟斤拷锟斤拷锟斤拷锟�锟斤拷锟斤拷锟斤拷目锟斤拷锟斤拷 PHP 4.2.0 锟芥本锟斤拷锟斤拷锟接的★拷
锟侥硷拷锟斤拷锟较达拷锟斤拷默锟较地会被锟斤拷锟芥到锟斤拷锟斤拷说锟侥拷锟斤拷锟绞蹦柯硷拷校锟斤拷锟斤拷锟� php.ini 锟叫碉拷 upload_tmp_dir 锟斤拷锟斤拷为锟斤拷锟斤拷锟斤拷路锟斤拷锟斤拷锟斤拷锟斤拷说锟侥拷锟斤拷锟绞蹦柯硷拷锟斤拷锟酵拷锟斤拷锟斤拷锟� PHP 锟斤拷锟叫伙拷锟斤拷锟侥伙拷锟斤拷锟斤拷锟斤拷 TMPDIR 锟斤拷锟斤拷锟斤拷锟斤拷锟矫o拷锟斤拷锟斤拷锟斤拷 PHP 锟脚憋拷锟节诧拷通锟斤拷锟斤拷锟斤拷 putenv() 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟角诧拷锟斤拷锟斤拷锟矫的★拷锟矫伙拷锟斤拷锟斤拷锟斤拷也锟斤拷锟斤拷锟斤拷锟斤拷确锟斤拷锟斤拷锟斤拷锟侥诧拷锟斤拷也锟斤拷锟斤拷锟较达拷锟斤拷锟侥硷拷锟较斤拷锟叫的★拷
Example #2 使锟侥硷拷锟较达拷锟斤拷效
锟斤拷锟斤拷暮锟斤拷锟� is_uploaded_file() 锟斤拷 move_uploaded_file() 锟皆伙拷取锟斤拷一锟斤拷锟斤拷锟斤拷息锟斤拷锟斤拷锟铰凤拷锟斤拷锟斤拷锟斤拷锟缴憋拷锟结供锟斤拷锟侥硷拷锟较达拷锟斤拷
<?php
// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
// of $_FILES.
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Possible file upload attack!\n";
}
echo 'Here is some more debugging info:';
print_r($_FILES);
print "</pre>";
?>
锟斤拷锟斤拷锟较达拷锟侥硷拷锟斤拷 PHP 锟脚憋拷为锟剿撅拷锟斤拷锟斤拷锟斤拷锟斤拷要锟皆革拷锟侥硷拷锟斤拷锟斤拷锟斤拷些锟斤拷锟斤拷锟斤拷应锟斤拷实锟斤拷锟轿猴拷锟竭硷拷锟较憋拷要锟侥硷拷椤o拷锟斤拷锟斤拷锟斤拷锟斤拷 $_FILES['userfile']['size'] 锟斤拷锟斤拷锟斤拷锟脚筹拷锟斤拷锟斤拷锟斤拷小锟斤拷锟侥硷拷锟斤拷也锟斤拷锟斤拷通锟斤拷 $_FILES['userfile']['type'] 锟斤拷锟斤拷锟斤拷锟脚筹拷锟侥硷拷锟斤拷锟酵猴拷某锟街憋拷准锟斤拷锟斤拷锟斤拷系锟斤拷募锟斤拷锟斤拷锟街伙拷锟斤拷锟斤拷锟斤拷锟斤拷一系锟叫硷拷锟斤拷械牡锟揭伙拷锟斤拷锟斤拷锟轿拷锟街碉拷锟饺拷煽突锟斤拷丝锟斤拷贫锟斤拷锟� PHP 锟剿诧拷锟斤拷锟斤拷椤o拷锟� PHP 4.2.0 锟金,伙拷锟斤拷锟斤拷通锟斤拷 $_FILES['userfile']['error'] 锟斤拷锟斤拷锟斤拷锟斤拷锟捷诧拷同锟斤拷锟斤拷锟斤拷锟斤拷锟�锟斤拷锟狡伙拷锟斤拷一锟斤拷锟斤拷未锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟揭达拷锟斤拷锟斤拷募锟斤拷锟斤拷锟绞蹦柯硷拷锟缴撅拷锟斤拷锟揭达拷锟斤拷锟斤拷贫锟斤拷锟斤拷锟斤拷锟斤拷牡胤锟斤拷锟�
锟斤拷锟斤拷锟斤拷锟矫伙拷锟窖★拷锟斤拷洗锟斤拷锟斤拷募锟斤拷锟斤拷锟� PHP 锟斤拷锟斤拷 $_FILES['userfile']['size'] 锟斤拷值锟斤拷为 0锟斤拷$_FILES['userfile']['tmp_name'] 锟斤拷为锟秸★拷
锟斤拷锟斤拷锟斤拷募锟矫伙拷斜锟斤拷贫锟斤拷锟斤拷锟斤拷锟斤拷胤锟揭裁伙拷斜锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟侥硷拷锟斤拷锟节憋拷锟斤拷锟斤拷锟斤拷锟绞憋拷锟缴撅拷锟斤拷锟�
Example #3 锟较达拷一锟斤拷锟侥硷拷
PHP 锟斤拷 HTML 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷支锟斤拷锟侥硷拷锟斤拷锟酵★拷
<form action="" method="post" enctype="multipart/form-data"> <p>Pictures: <input type="file" name="pictures[]" /> <input type="file" name="pictures[]" /> <input type="file" name="pictures[]" /> <input type="submit" value="Send" /> </p> </form>
<?php
foreach ($_FILES["pictures"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];
$name = $_FILES["pictures"]["name"][$key];
move_uploaded_file($tmp_name, "data/$name");
}
}
?>