這個上傳代碼,究竟有關問題出在哪裡啊

來源:互聯網
上載者:User
這個上傳代碼,究竟問題出在哪裡啊???
這個上傳代碼,裡面沒有限制上傳檔案的大小,但是現在上傳超過100K的就總無法上傳,問題出在哪裡啊?
我想弄限制,只能上傳500K以內的檔案,得如何改?



$allow_type=array("m4r","jpg");//允許上傳的圖片類型

$name=$_FILES['upImg']['name']; //用戶端檔案的原名稱

$upload_dir="upload/";//圖片儲存目錄

//strtolower 將字串轉為小寫

$file_suffix=strtolower(getFileSuffix($name));

if(!in_array($file_suffix,$allow_type))

{

//implode 把數組元素組合為字串

$all_type=implode("、",$allow_type);

exit("");

}

//explode 把字串分割為數組

$name_array=explode(".",$name);


do
{

$name_array[0]=randomFileName();

$name=implode(".",$name_array);

$upload_file=$upload_dir.$name;

}while(file_exists($upload_file));


$tmp_name=$_FILES['upImg']['tmp_name'];

//is_uploaded_file 判斷檔案是否是通過HTTP POST上傳的

if(is_uploaded_file($tmp_name))

{




//move_uploaded_file 將上傳檔案移至指定目錄

if(move_uploaded_file($tmp_name,$upload_file))

{

echo "$upload_file 歌曲上傳成功!";
exit("");


}

}
//擷取檔案尾碼名

function getFileSuffix($fileName)

{

//strrchr 返回.在$fileName中最後出現的位置到結尾的所有字元。substr 再去掉'.'

return substr(strrchr($fileName, '.'), 1);

}

//產生隨機檔案名稱

function randomFileName()

{

//將時區調為北京時間,php5預設為格林威治標準時間

date_default_timezone_set("PRC");

return date('YmdHis').rand(100,999);

}



?>

------解決方案--------------------
1、超過100K的檔案無法上傳,請看一下$_FILES['upImg']['error']的值,可能有以下幾種情況:
值為1,表示檔案大小超過了php.ini中定義的upload_max_filesize;
值為2,表示檔案大小超過了HTML中的限制。HTML中可以通過以下代碼限制檔案大小:
HTML code

------解決方案--------------------
在PHP內判斷也可以!
if($_FILES['upImg']['size']>1024*500)
{
echo "檔案超過了500k,無發上傳!";
exit;
}
至於無法上傳,我個人估計是:
do
{

$name_array[0]=randomFileName();

$name=implode(".",$name_array);

$upload_file=$upload_dir.$name;

}while(file_exists($upload_file));
檔案存在才將$upload_file=$upload_dir.$name;事實該檔案在第一次的時候肯定不存在,那這個do裡的代碼根本不執行,也就是說:$upload_file不能真實反映其檔案路徑,那麼在後面move_uploaded_file的時候也就無法執行了。
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.