2017年12月27日 星期三

PHP學習之路_上傳檔案

1.首先開一個新的PHP檔案P6_1















2.寫入檔案上傳字元
下一行加表單選項的表單(會變成紅虛線框框)
然後表單裡面加一個檔案欄位.跟一個按鈕.
3選取表單內容.然後 動作到 p6_2.php
也就是<form action="p6_2.php"
這部分完成

4.接著建立p6_2.php網頁
首先在最上端輸入指令
(檔案指定名稱)=(指令)(來源檔案欄位名稱)(指令)

<?php
$type=$_FILES['fileField']['type'];
$size=$_FILES['fileField']['size'];
$name=$_FILES['fileField']['name'];
$tmp_name=$_FILES['fileField']['tmp_name'];
?>

然後再<body>呼叫變數
<?php
echo "檔案類型:".$type."</br>";

echo "檔案尺寸:".$sizemb."</br>";
echo "檔案名稱:".$name."</br>";
echo "暫存名稱:".$tmp_name."</br>";
?>

這時候還只是空上傳

5.然後我們加入一個限定上傳擋名的語法
在暫存名稱下面

echo "暫存名稱:".$tmp_name."</br>";
if($type=="image/jpeg"){
echo "OK";
}else{
echo "oh no";
}
?>

如果有兩個以上可上傳的檔名就是這樣
echo "暫存名稱:".$tmp_name."</br>";
if($type=="image/jpeg" || type=="image/jpeg"){

echo "OK";
}else{
echo "oh no";
}
?>


6.然後加一個限定上傳容量的語法
在上傳限定檔名的下面

echo "暫存名稱:".$tmp_name."</br>";
if($type=="image/jpeg" || type=="image/jpeg"){
        if($size < 10240000){

echo "OK";
         }else{
echo "to big";
}
}else{
echo "oh no";
}
?>

7.但這會呈現KB.如果要呈現MB
就要這樣子加.ound(數值,位數)函數,請它幫我將裡面的數值四捨五入到小數點第二位
<?php
$sizemb=round($size/1024000,2);
echo "檔案類型:".$type."</br>";
echo "檔案尺寸:".$sizemb."</br>";
echo "檔案名稱:".$name."</br>";
echo "暫存名稱:".$tmp_name."</br>";


8.然後如果要上傳的檔案用日期命名
1.首先加入explode(字元,目標)語法在10240000下面
獲得
$file=explode(".",$name);  //把檔名跟檔案類型拆開

然後加新檔名語法.日期語法.最後隨機變數
$new_name=date(ymdhis)."_".rand(0,10);

9最後加入MOVE_UPLOADED真正上傳語法 //拆開的檔案類型放在最後面
move_uploaded_file($tmp_name,"".$new_name.".".$file[1]);

10如果上傳功能只想做到步驟七.原檔名上傳的話
最後的真正上傳語法只要這樣
move_uploaded_file($tmp_name,"".$name);

完整語句為

<?php
$type=$_FILES['fileField']['type'];
$size=$_FILES['fileField']['size'];
$name=$_FILES['fileField']['name'];
$tmp_name=$_FILES['fileField']['tmp_name'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>上傳結果</title>
</head>
<body>
<?php
$sizemb=round($size/1024000,2);
echo "檔案類型:".$type."</br>";
echo "檔案尺寸:".$sizemb."</br>";
echo "檔案名稱:".$name."</br>";
echo "暫存名稱:".$tmp_name."</br>";
if($type=="image/jpeg"){
if($size < 10240000){
$file=explode(".",$name);
$new_name=$file[0]."-".date(ymdhis)."_".rand(0,10);
move_uploaded_file($tmp_name,"".$new_name.".".$file[1]);
echo "OK";
}else{
echo "to big";
}
}else{
echo "oh no";
}
?>
</body>

</html>

參考文獻
https://pjchender.blogspot.tw/2015/03/php-mysql_23.html




沒有留言: