標籤:val 檔案的 false server 伺服器 Enctype XML htm 組建檔案
一:上傳檔案與報錯
$_FILES 超全域數組,包含了有關上傳檔案的所有資訊!
而且,這個數組中只包含檔案相關資訊,其他資料依然在$_POST裡面
$_FILES是一個二維數組,每上傳一個檔案,都是數組的一個子數組。每個子數組包含資訊如下
‘name‘ => string ‘css面試題目.docx‘ (length=20)(上傳檔案名稱)
‘type‘ => string ‘application/vnd.openxmlformats-officedocument.wordprocessingml.document‘ (length=71)
(上傳檔案所屬的MIME類型)
‘tmp_name‘ => string ‘F:\0PHP\wamp64\tmp\php47F.tmp‘ (length=29)
(檔案上傳後在伺服器儲存的地址)
關於報錯
‘error‘ => int 0
0:沒錯
1:超過伺服器限制大小。php.ini檔案的upload_max_filesize
2: 超過了用戶端限制大小。表單中的隱藏欄位name="MAX_FILE_SIZE"限制
3.檔案只被上傳一部分
4.檔案沒上傳
二.上傳步驟
var_dump($_FILES);
//取到檔案名稱並用.分隔維數組
$nameArr=explode(".", $_FILES["myFile"]["name"]);
//從上述數組中取到最後一個就是上傳檔案的尾碼名
$houzhuiming=$nameArr[count($nameArr)-1];
//取到使用目前時間+隨機數的方式,隨機組建檔案名
$filename=date("YmdHis").rand(100,999).".".$houzhuiming;
//判斷myfile裡面的臨時檔案是不是上傳過來的
if(is_uploaded_file($_FILES["myFile"]["tmp_name"])){
//將臨時檔案移動到伺服器www根目錄下的upload檔案夾下
//成功返回true,否則false
$isOk=move_uploaded_file($_FILES["myFile"]["tmp_name"], $_SERVER[‘DOCUMENT_ROOT‘]."/upload".$filename);
if(!$isOk){
die("上傳失敗");
}
}else{
die("上傳檔案不合法");
}
echo "<br>檔案上傳成功";
三.檔案下載
檔案下載的類型使用MIME類型表示
下載檔案的描述,如給出檔案名稱等
下載檔案的長度以位元組為單位
header():發送頭資訊,其前不能有任何輸出
<html>
<head>
<title>ddd</title>
<head>
<body>
<form action="todo.php" method="post"
enctype=multipart/form-data>
<input type="file" name="myfile"><br>
<input type="hidden" name="MAX_FILE_SIZE"
value=100000>
<input type="submit" value="上傳">
</form>
</body>
</html>
<?php
print_r($_FILES);
echo "<br>";
echo "上傳檔案的名稱是:".$_FILES[myfile][name]."<br>";
echo "上傳檔案的類型是:".$_FILES[myfile][type]."<br>";
echo "上傳檔案的類型是:".$_FILES[myfile][tmp_name]."<br>";
$copyto="uploads/".time().$_FILES[myfile][name]; //加上時間或隨機數,防止別人利用上傳的檔案搞破壞
if($_FILES[myfile][error]>0)
{
switch($_FILES[myfile][error])
{
case 1:
echo "上傳的檔案超過了php.ini中upload_max_filesize的值<br>";
break;
case 2:
echo "上傳檔案超過了HTML表單的max_file_size的值<br>";
break;
case 3:
echo "檔案被部分上傳<br>";
break;
case 4:
echo "沒有檔案上傳<br>";
break;
}
exit;
}else
{
if(is_loaded_file($_FILES[myfile][tmp_name]))
{
if(move_uploaded_file($_FILES[myfile][tmp_name],$copyto))
{
echo "拷貝成功<br>";
}else
{
echo "拷貝失敗<br>";
}
}
}
echo "上傳檔案大小為".$_FILES[myfile][size];
?>
PHP檔案上傳與下載