<form action="" method="post" enctype="multipart/form-data" name="uploadForm" id="uploadForm">
<p><strong>上傳圖片一:</strong><br />
<input name="file0" type="file" id="file0" />
</p>
<p><strong>上傳圖片二:</strong><br />
<input name="file1" type="file" id="file1" />
</p>
<p><strong>上傳圖片三:</strong><br />
<input name="file2" type="file" id="file2" />
</p>
<p><strong>上傳圖片四:</strong><br />
<input name="file3" type="file" id="file3" />
</p>
<p>
<input name="Submit" type="submit" value="開始上傳"/>
<input type="reset" name="button" id="button" value="清除" />
</p>
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// 上傳檔將存入此路徑裡的 rev-slider 資料夾
$upload_dir = "/rev-slider";
// 上傳檔總數
$total_uploads = 4;
// 上傳檔大小限制,此處限制為400KB
$size_bytes =400 * 1024;
// 副檔名限制
$limitedext = array(".jpg");
echo "<h3>上傳結果</h3>";
// 用迴圈讀取上傳欄位資料
for ($i = 0; $i < $total_uploads; $i++) {
$new_file = $_FILES['file'.$i];
// 讀取上傳檔名
$file_name = $new_file['name'];
$name=explode('.',$file_name);
// 存入暫存區的檔名
$file_tmp = $new_file['tmp_name'];
// 檔案大小
$file_size = $new_file['size'];
// 判斷欄位是否指定上傳檔案…
if (!is_uploaded_file($file_tmp)) {
// 沒有上傳檔,顯示訊息。
echo "欄位 $i: 沒有選取上傳檔案。<br />";
}else{
// 若有上傳檔,則取出該檔案的副檔名
$ext = strrchr($file_name,'.');
// 判斷副檔名是否符合預期
if (!in_array(strtolower($ext),$limitedext)) {
// 不符合預期,顯示錯誤訊息。
echo "欄位 $i: ($file_name) 的檔案副檔名有誤(只允許JPE檔) <br />";
}else{
// 檢查檔案是否太大
if ($file_size > $size_bytes){
echo "欄位 $i: ($file_name) 無法上傳,請檢查檔案是否小於 ". $size_bytes / 1024 ." KB。<br />";
}else{
if (move_uploaded_file($file_tmp,$upload_dir.$file_name)) {
echo "欄位 $i: ($file_name) 上傳成功!<br />";
}else{
echo "欄位 $i: 無法上傳。<br />";
}
}
}
}
}
}
?>
在本地預覽試上傳時不會出現錯誤,但是上傳到網路時就會變成無法上傳
我後來有把FTP資料夾權限改成777,可是一樣是無法上傳
後來我想到我的後台是放在原本網站下面的資料夾,會不會是路徑的問題?
我的後台放在紅筆畫的那個資料夾,可是我現在要上傳到藍筆畫的資料夾那邊
請指點一下,謝謝!
你要注意一件事,網路路徑跟主機路徑是不同的。
如果假設你的網路 root路徑是放在 /www 內。
則網路路徑的 /rev-slider
是實體位置是在 /www//rev-slider 沒錯。
可是檔案上傳是依主機路徑的。
也就是說,實際你上傳的路徑是會在 /rev-slider 這裏。
一般來說,會搭配
$rootpath = $dirname(__FILE__);
來獲得當前主機路徑位置處理。