詭異的檔案上傳

Home Home
引用 | 編輯 DLd
2009-03-29 13:20
樓主
推文 x0
目前在寫一個有上傳進度的上傳程式

因為沒有什麼Ajax基礎 所以就去抓了jqUploader 然後照官方的手冊慢慢改

接下來詭異的事情就發生了

因為要處理上傳後的檔案

所以自己寫了一隻 php 然後用 move_uploaded_file()

結果在本機測試都正常

可是上傳到空間後就無法正常上傳

測試了一下後發現錯誤好像是在 move_uploaded_file() 這個函式上

他並沒有傳回True

請問我是不是有什麼地方沒注意到呢 ?


複製程式
              if(move_uploaded_file($_FILES['UpFile']['tmp_name'],'./' . $_FILES['UpFile']['name']))
                     echo "ok";
              else
                     echo "here error";


獻花 x0
引用 | 編輯 Inndy
2009-04-25 15:01
1樓
  
小弟這有一支上傳程式,自行修改試試看吧~
還有顯示錯誤訊息的功能
複製程式
<?php
  define("UPLOAD_DIR", "./");

  // 用來顯示錯誤訊息
  function error($str)
  {
    print "<font color=\"#ff0000\">{$str}</font>\n";
    exit();
  }

  header("Content-Type: text/html; charset=big5");

  print <<<_EOT_
<form method="POST" action="301.php" enctype="multipart/form-data">
  <input type="hidden" name="MAX_FILE_SIZE" value="102400">
  <input type="file" name="file">
  <input type="submit" value="傳送">
  <input type="hidden" name="mode" value="upload">
</form>
_EOT_;

  if($_POST["mode"] == "upload")
  {
    // 錯誤檢查
    switch ($_FILES["file"]["error"])
    {
      case UPLOAD_ERR_INI_SIZE:
      case UPLOAD_ERR_FORM_SIZE:
        error("超過檔案大小限制。");
      case UPLOAD_ERR_PARTIAL:
      case UPLOAD_ERR_NO_FILE:
        error("無法上傳。");
    }

    // 為求慎重,也檢查一次檔案的大小
    if($_FILES["file"]["size"] > 1024 * 100)
    {
      error("超過檔案大小限制。");
    }
///////////////////
//關閉阻擋功能//
//////////////////
//    // 拒絕png與jpeg之外的檔案
//    if(!preg_match("/^image\/.*(png|jpeg)$/i", $_FILES["file"]["type"]))
//    {
//      error("檔案形式不合法。");
//    }


    // 拒絕使用了特定字元以外之文字的檔名
    if(preg_match("/[^\w\d\-\.]/", $_FILES["file"]["name"]))
    {
      error("檔名不合法。");
    }

    // 移動檔案
    $upload_file = UPLOAD_DIR . $_FILES["file"]["name"];
    if(move_uploaded_file($_FILES["file"]["tmp_name"], $upload_file))
    {
      chmod($upload_file, 0644);
      $img_size = getimagesize($upload_file);
      print "以下的檔案已經上傳成功。<br>\n";
      print '<img src="' . $upload_file . '" ';
      print $img_size[3] . ' border="0">';
    }
    else
    {
      error("上傳失敗。");
    }
  }
?>


獻花 x0