[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阅读 123,301评论 18 134
  • 众所周知,文件上传在一些网站应用中是必不可少的一部分。比如个人博客上传个性头像,一些论坛分享好的学习资料等,这就涉...
    liuboxx1阅读 467评论 0 0
  • 昏暗的办公室里,只有丝许阳光透过半开的百叶窗的缝隙流入房间,这是保密局长办公室。 保密局,这个国家最具势力...
    favourlove阅读 87评论 0 1
  • 摸着胸口, 感受心的跳动。 它如同火焰在翻滚。 它在跳动,它在咆哮, 它的声音 ,太小太小。 我们会恐惧,而心会带...
    古泽平雨阅读 137评论 1 0
  • 很帅的猴子
    广东叔叔_阅读 20评论 0 0
  • 我倚在你身边 猫咪蜷在我的腿上 你手里拿着我喜欢的薯片 我拿着猫咪喜欢的小肉干 这样它就不会惦记你养的鱼 虽然它不...
    墨倾城阅读 80评论 0 0