黑马程序员技术交流社区

标题: 【上海校区】php如何无刷新上传文件代码 [打印本页]

作者: 梦缠绕的时候    时间: 2018-11-27 09:26
标题: 【上海校区】php如何无刷新上传文件代码

要实现无刷新文件上传我们有一种假像的做法就是使用iframe框架实现文件上传,另一种就是利用ajax实现文件上传了,这两种方法都可以达到无刷新文件上传功能。
一个最原始最简单的iframe上传例子:
前台上传页面index.html,主要是一个表单与一个js回调函数。上传文件时,form表单的method、 enctype属性必须和下面代码一样。然后将target的值设为iframe的name,这样就可以实现无刷新上传文件。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
<title>上传文件</title>  
</head>  

<body>  
<script>  
function CallbackFunction(str){  
alert("上传成功");  
}  
</script>  
<form action="uploadfile.php" enctype="multipart/form-data" method="post" target="iframeUpload">  
<iframe name="iframeUpload" src="" width="350" height="35" frameborder=0  SCROLLING="no" style="display:NONE"></iframe>  
<input id="test_file" name="test_file" type="file">  
<input value="上传文件" type="submit">  
</form>  
</body>  
</html>

后台上传处理页面uploadfile.php,这段代码为简单的上传代码,没有进行错误及异常处理。上传代码执行完成后,要告诉父页面已经上传完毕了,因此,在这个页面里调用父页面的回调函数CallbackFunction,这个函数可以有参数,形式自己定义。
<?php  
set_time_limit(0);  
if($_SERVER['REQUEST_METHOD']=='POST') {  
  move_uploaded_file($_FILES["test_file"]["tmp_name"],  
  dirname($_SERVER['SCRIPT_FILENAME'])."/UploadTemp/" . $_FILES["test_file"]["name"]);  
  echo "<script>window.parent.CallbackFunction();</script>";  
}  
?>

以上是用iframe实现无刷新上传文件的简单方法,想要健壮的程序的话需要再细化



作者: 不二晨    时间: 2018-11-28 15:52
奈斯
作者: 梦缠绕的时候    时间: 2018-11-29 18:21





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2