2014年5月27日 星期二

PHP如何上傳檔案

天殺的一直在寫CI框架
以及一直用JQ來寫程式部分部分
一直在測試怎用JQ的AJAX傳送檔案的功能
真是夠了改了搜尋關鍵字"PHP 上傳檔案"才找到解答
應該要拋棄執著用AJAX上傳(我到底在堅持什麼啦)
卡在這點弄得這麼久
之後發現要用AJAX上傳檔案好像有其他套件可以直接做使用的樣子
不管了...在這邊紀錄一下PHP上傳單檔的方法

這個方法在CI框架下也適用
把接收端寫到application\controllers\下即可
記得表單的action要能連到

視界表單
    <form enctype="multipart/form-data" method="post" action="add_photo.php"
        name="photo_data_from">
        <input name="file_data" type="file"><br />
        <input name="send" value="上傳檔案" type="submit">
    </form>


PHP接收端部分
echo "檔案名稱: " . $_FILES ["file_data"] ["name"];// 自行段行
echo "檔案類型: " . $_FILES ["file_data"] ["type"];// 自行段行
echo "檔案大小: " . ($_FILES ["file_data"] ["size"] / 1024) . " Kb";// 自行段行
echo "暫存名稱: " . $_FILES ["file_data"] ["tmp_name"];
move_uploaded_file ( $_FILES ["file_data"] ["tmp_name"], "./assets/images/activity/" . $_FILES ["photo_data"] ["name"] ); 
不知道為什麼加上"<br/>"CSS無法辦定他是字串
而是判定HTML語言
為了程式碼美觀所以請大家在1.2.3行後面自行加上"<br/>"囉~~~

檔案會存在$_FILES裡面
然後會存成陣列方式來標示這個檔案的各屬性
最後使用move_uploaded_file()來寫入檔案到伺服器端內
使用方式如下

表單設定
from的enctype一定要是"multipart/form-data"
from的method要是"post"
這很重要!!!


後台程式碼說明
move_uploaded_file("暫存檔案","存入檔案名稱含路徑")
站存檔案剛好用$_FILES ["file_data"] ["tmp_name"]來存取
之後後面可以加上"路徑"."檔名"來寫入伺服端
我用顏色分區應該很明顯

$_FILES第一個陣列值(一維陣列編號)是前台input的name的名字
所以不要打錯了不然後台PHP收不到

沒有留言:

張貼留言