原理:
借用隐藏的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"];
中的name
和tmp_name
,
是$_FILES["file"]
的内置属性,分别表示原文件名和在服务器上的临时地址。
网友评论