[PHP] php異步上傳文件

原理:
借用隱藏的iframe來實現異步上傳

1. 客戶端

//1.php
<!doctype html>
<div>
    <iframe name=targetIframe></iframe>
    <form 
        id=uploadForm
        method=post 
        action=2.php 
        enctype=multipart/form-data 
        target=targetIframe>
            <input type=file name=file />
    </form>
    
    <input id=upload type=button value=upload />
    <script>
        document.querySelector('#upload').onclick=function(){
            document.querySelector('#uploadForm').submit();
        };
    </script>
</div>

注意:
(1)form.method=post
(2)form.enctype=multipart/form-data
(3)form.target=iframe.name
這里是借用了一個iframe來顯示form.action頁面,
即表單提交后iframe.src= form.action
如果不設置的話,會在當前頁面顯示form.action

2. 服務器端

//2.php
<?php
    $fileName=$_FILES["file"]["name"];
    $originFilePath=$_FILES["file"]["tmp_name"];
    $targetFilePath="uploadfiles/".time().$fileName;
    
    $result=move_uploaded_file($originFilePath,$targetFilePath);
    
    echo $result?"Success":"Failed";
?>

注意:
(1)文件首先上傳到服務器的臨時地址,然后使用move_uploaded_file拷貝到目標地址
(2)$_FILES["file"]中的file,是表單元素<input type=file name=file />name屬性值
(3)$_FILES["file"]["name"];$_FILES["file"]["tmp_name"];中的nametmp_name
$_FILES["file"]的內置屬性,分別表示原文件名和在服務器上的臨時地址。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • 眾所周知,文件上傳在一些網站應用中是必不可少的一部分。比如個人博客上傳個性頭像,一些論壇分享好的學習資料等,這就涉...
    liuboxx1閱讀 669評論 0 0
  • 一、表單簡介 GET所有表單輸入的數據被加載到請求的URL地址后面;如:test.php?username=fre...
    XZ陽光小熊閱讀 1,052評論 0 1
  • 昏暗的辦公室里,只有絲許陽光透過半開的百葉窗的縫隙流入房間,這是保密局長辦公室。 保密局,這個國家最具勢力...
    favourlove閱讀 330評論 0 1
  • 摸著胸口, 感受心的跳動。 它如同火焰在翻滾。 它在跳動,它在咆哮, 它的聲音 ,太小太小。 我們會恐懼,而心會帶...
    古澤平雨閱讀 292評論 1 0