請點選以下連結, 安裝 Flash Player 9 可協助你正確瀏覽本網站
至 Adobe 網站更新 Flash Player 9
更新完成請重新整理本網頁
Blog 首頁 | 文章列表 | 留言板 | 作品展示 |    .

雖然檔案上傳已經不是新鮮事了,但是總覺得自己寫的應該比較容易看得懂,遇到問題要討論也比較方便一些。

一、前置作業

PHP 檔案上傳運作原理
PHP 上傳檔案時會先將檔案移到暫存目錄,上傳成功後再將檔案送往上傳目錄並自動清除暫存檔

php.ini 檔案上傳相關設定
; Whether to allow HTTP file uploads. 檔案上傳,預設為開啟
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified). PHP 暫存目錄設定,預設為系統暫存目錄,若需設定請將前置分號移除
;upload_tmp_dir =

; Maximum allowed size for uploaded files. PHP 預設上傳限制為 2M
upload_max_filesize = 2M

二、檔案上傳示範

file.htm
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<title>檔案上傳</title>
</head>
<body>
<form action="file_ok.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="max_file_size" value="10240">
<input type="file" name="myfile">
<input type="submit" value="上傳">
</form>
</body>
</html>
1. 範例檔案為 big5 編碼,因 utf-8 編碼有中文檔案名上傳問題,之後再討論。
2. 上傳檔案時,form 的 enctype 屬性要設定為 multipart/form-data
3. <input type="hidden" name="max_file_size" value="1024">
可限定上傳檔案大小(1k = 1024),要寫在 <input type="file" ... > 之前

file_ok.php
<?php
$uploaddir = '';
$uploadfile = $uploaddir.basename($_FILES['myfile']['name']);

echo "<pre>";
if (move_uploaded_file($_FILES['myfile']['tmp_name'], $uploadfile)) {
    echo "Upload OK \n";
} else {
    echo "Upload failed \n";
}
print_r($_FILES);
echo "</pre>";
?>
1. PHP 4.1 之前版本,要用 $HTTP_POST_FILES 取代 $_FILES
2. $uploaddir 為上傳目錄設定。
3. 移除檔案可使用 unlink() 函數,例 unlink($uploaddir.$uploadfile);

三、注意事項

UTF-8 的中文檔案名上傳問題
utf-8 編碼網頁無法在 big5 系統正確處理中文檔名,原因在於 move_uploaded_file() 不能處理 utf-8 中文編碼,需利用 iconv() 函數作轉碼,解決方法如下:

請將
move_uploaded_file($_FILES['myfile']['tmp_name'], $uploadfile)
改為
move_uploaded_file($_FILES['myfile']['tmp_name'], iconv("utf-8", "big5", $uploadfile))
2008/05/07 11:57 2008/05/07 11:57
2008/05/07 11:57 

Trackback Address :: http://blog.raienet.com/trackback/410

  1. WEI 2008/05/17 19:21 回覆文章 | 回覆此篇 | 編輯 / 刪除

    請問...我加了iconv() 函數還是不能用...

(設密碼允許你在送出後能進行編輯)

(come) (boring) (smile) (angry) (cold) (cry) (doubt) (high) (love) (scare) (zzz) (turn) 


[◀ PREV][1]... [10][11][12][13][14][15][16][17][18]... [390][NEXT ▶]