JavaScript,php檔案上傳簡單實現

來源:互聯網
上載者:User

標籤:

  非ajax,非iframe,最原始使用file控制項的檔案上傳,記錄過程備忘。

  實現目標,能夠將檔案上傳到指定位置。

  用戶端用input的file控制項:

<form action=‘data.php‘ method=‘post‘ enctype=‘multipart/form-data‘>  <input type=‘file‘ name=‘file‘ />  <input type=‘submit‘ /></form>

  控制項的name屬性就是為了和伺服器端通訊用的。在選擇檔案後,我們可以嘗試看看file控制項的屬性(此時不要按submit按鈕),此時該控制項下的files就是檔案的一些資訊了:

  接著按下sumbit按鈕提交檔案,form要正確提交以下幾個條件都不能少:

    1. 正確的action地址。後台我是用php寫的,一開始用的是絕對位址,一直出錯,原來忘了加http://
    2. method=‘post‘
    3. enctype=‘multipart/form-data‘

  form檔案提交到後台後,可以用chrome-logger跟蹤一下檔案的樣子:

  tmp_name就是所上傳檔案的臨時位置了,在form提交以後,伺服器會以臨時檔案的形式儲存上傳檔案。我們需要做的,只是把這個臨時檔案copy到伺服器目標檔案夾;同時檔案名稱不能使用原來的name,因為可能會和目標檔案夾下的重複,所以就要產生唯一的user_uid,這裡我簡單地rand了一個數字,複製檔案用了php內建的copy函數(函數的兩個參數都是路徑+檔案名稱的形式):

include ‘ChromePhp.php‘;ChromePhp::log($_FILES[‘file‘]);  // for debug$user_uid = rand(0, 50000);$file_pos = strpos($_FILES[‘file‘][‘name‘], ‘.‘);$file_name = $user_uid . ‘.‘ . substr($_FILES[‘file‘][‘name‘], $file_pos + 1);$savePath = dirname(__FILE__) . ‘\\‘ . $file_name;copy($_FILES[‘file‘][‘tmp_name‘], $savePath);

  最後還有個問題,如此這般後一直不能上傳7z、zip等格式的檔案,以為是不能傳壓縮檔,最後發現是php.ini檔案設定問題,找到php.ini檔案中的upload_max_filesize屬性,把值加大就可以了。在php中使用$_FILES的時候,如果出錯,可以嘗試列印錯誤編號自己解決,參考Error Messages Explained

 

參考: javascript,php檔案上傳詳解

JavaScript,php檔案上傳簡單實現

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.