php 上傳多個檔案
PHP 上傳檔案的必要環境:
● php.ini 之設定
確認允許檔案上傳
file_uploads = On
設定暫存目錄區的路徑
upload_tmp_dir = "C:/temp"
設定可接受的上傳檔案大小
upload_max_filesize = 10M
● Apache 設定檔 httpd.conf
設定主機傳送及接收的等待時間(秒)
Timeout 300
檔案上傳的表單 (Form),使用之注意事項:
以 POST 方式傳送資料
<form> 標籤要加入
enctype="multipart/form-data" 屬性
傳送資料的 <input> 標籤,必須設定 type="file" 屬性,以產生 瀏覽 按鈕。
建議設定一隱藏欄位:name="MAX_FILE_SIZE" ,value 必須設定一數字,做為上傳檔案大小的限制。
單位:bytes
將表單中 type="file" 的 <input> 標簽名稱 name,改由陣列方式來處理。
參考許多網站的範例修改一版,直接拿來就可以使用了
開啟資料夾命名為 upload 在裡面新增 index.php、upload.php、file資料夾
index.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>檔案上傳</title>
</head>
<body>
<div style="text-align:center;">
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="10000000">
選擇檔案一:<input name="uploadfile[]" type="file"></br>
選擇檔案二:<input name="uploadfile[]" type="file"></br>
選擇檔案三:<input name="uploadfile[]" type="file"></br>
<input type="submit" value="送出">
</form>
</div>
</body>
</html>
upload.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="refresh" content="0;url=index.php" />
<title>多個檔案上傳處理</title>
</head>
<body>
<?php
$uploaddir="./file/";
$i=count($_FILES["uploadfile"]["name"]);
for ($j=0 ; $j<$i ; $j++)
{
$tmpfile=$_FILES["uploadfile"]["tmp_name"][$j];
$file2=mb_convert_encoding($_FILES["uploadfile"]["name"][$j],"big5","utf8");
if(move_uploaded_file($tmpfile,$uploaddir.$file2))
{
echo "上傳成功<br>";
echo "檔案名稱:".$_FILES["uploadfile"]["name"][$j]."<br>";
echo "檔案類型:".$_FILES["uploadfile"]["type"][$j]."<br>";
echo "檔案大小:".$_FILES["uploadfile"]["size"][$j]."<br>";
}
else
{
echo "上傳失敗!<br> ";
echo "檔案名稱:".$_FILES["uploadfile"]["name"][$j]."<br>";
echo "檔案類型:".$_FILES["uploadfile"]["type"][$j]."<br>";
echo "檔案大小:".$_FILES["uploadfile"]["size"][$j]."<br>";
echo "失敗原因:".$_FILES['uploadfile']['error'][$j]."<br>";
}
}
?>
</body>
</html>
● php.ini 之設定
確認允許檔案上傳
file_uploads = On
設定暫存目錄區的路徑
upload_tmp_dir = "C:/temp"
設定可接受的上傳檔案大小
upload_max_filesize = 10M
● Apache 設定檔 httpd.conf
設定主機傳送及接收的等待時間(秒)
Timeout 300
檔案上傳的表單 (Form),使用之注意事項:
以 POST 方式傳送資料
<form> 標籤要加入
enctype="multipart/form-data" 屬性
傳送資料的 <input> 標籤,必須設定 type="file" 屬性,以產生 瀏覽 按鈕。
建議設定一隱藏欄位:name="MAX_FILE_SIZE" ,value 必須設定一數字,做為上傳檔案大小的限制。
單位:bytes
將表單中 type="file" 的 <input> 標簽名稱 name,改由陣列方式來處理。
參考許多網站的範例修改一版,直接拿來就可以使用了
開啟資料夾命名為 upload 在裡面新增 index.php、upload.php、file資料夾
index.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>檔案上傳</title>
</head>
<body>
<div style="text-align:center;">
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="10000000">
選擇檔案一:<input name="uploadfile[]" type="file"></br>
選擇檔案二:<input name="uploadfile[]" type="file"></br>
選擇檔案三:<input name="uploadfile[]" type="file"></br>
<input type="submit" value="送出">
</form>
</div>
</body>
</html>
upload.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="refresh" content="0;url=index.php" />
<title>多個檔案上傳處理</title>
</head>
<body>
<?php
$uploaddir="./file/";
$i=count($_FILES["uploadfile"]["name"]);
for ($j=0 ; $j<$i ; $j++)
{
$tmpfile=$_FILES["uploadfile"]["tmp_name"][$j];
$file2=mb_convert_encoding($_FILES["uploadfile"]["name"][$j],"big5","utf8");
if(move_uploaded_file($tmpfile,$uploaddir.$file2))
{
echo "上傳成功<br>";
echo "檔案名稱:".$_FILES["uploadfile"]["name"][$j]."<br>";
echo "檔案類型:".$_FILES["uploadfile"]["type"][$j]."<br>";
echo "檔案大小:".$_FILES["uploadfile"]["size"][$j]."<br>";
}
else
{
echo "上傳失敗!<br> ";
echo "檔案名稱:".$_FILES["uploadfile"]["name"][$j]."<br>";
echo "檔案類型:".$_FILES["uploadfile"]["type"][$j]."<br>";
echo "檔案大小:".$_FILES["uploadfile"]["size"][$j]."<br>";
echo "失敗原因:".$_FILES['uploadfile']['error'][$j]."<br>";
}
}
?>
</body>
</html>
留言
張貼留言