Home > php教程 > PHP源码 > body text

php+ajax实现图片文件上传实例代码

WBOY
Release: 2016-06-08 17:22:00
Original
878 people have browsed it

现在我们常用的异步文件上传功能有几种,如我最初使用的是使用iframe框架形式了效果是一样的,到后来的真正的ajax功能效果,到最后的flash+php功能,下面我介绍ajax与iframe实现异步文件上传的功能的例子。

<script>ec(2);</script>

方法一,利用jquery ajaxfileupload.js文件上传

其实就是实现无刷新式的文件上传。可采用IFRAME文件上传原理。
实际上在用PHP上传文件时。。。只能用$_FILES形式,但是若我们只是单一的用JS方式取其ID,如..document.getElementById('img').value或者jquery形式的$("#img")都是不能正真实际上传的(但是还是有很多人这样做,刚开始时我也是)。
可是功能上又要要求实现所谓的“异步上传”,怎么办呢??只能借助于第三方的组件,或者自己写一个(在网页里嵌入一个IFRAME)。但如果是考虑开发时间,那以用第三方的,这里有一个不错的jQuery 的Ajax文件上传的组件,是“ajaxfileupload.js",其组件下载地址为:http://www.111cn.net/,下载完毕里面有一个php的应用demo,很容易看懂的。
过程:

(1 )前端上文件的代码: test.php

 代码如下 复制代码

 
 
 
相应的HTML为:
 
 

这样客户端就完成了。

(2) 再服务器端时doajaxfileupload.php

此处为了简便的检测是否真正的传值过来了,你可以将它存起来了。

 代码如下 复制代码
 $file_infor = var_export($_FILES,true);
 file_put_contents("d:file_infor.php".$file_infor);

这样你打来刚生成的file_infor.php文件时,你又看到了熟悉的信息了:

 代码如下 复制代码
  array(
 'name'=>'lamp.jpg',
 'type'=>'image/pjpeg',
 'tmp_name'=>'c:windowstempphpFA.tmp',
 'error'=>0,
 'size'=>3127
)

当然,真正的处理类于这样的:

 代码如下 复制代码
  $upFilePath = "d:/";
  $ok=@move_uploaded_file($_FILES['img']['tmp_name'],$upFilePath);
if($ok === FALSE){
 echo json_encode('file_infor'=>'上传失败');
}else{
 echo json_encode('file_infor'=>'上传成功');
}
?>

方法二,利用iframe框架上传图片

html代码

 代码如下 复制代码


 

  
 

 
 

 

 

index.js
$(function(){
 $("#upload_file").change(function(){
   $("#uploadFrom").submit();
 });
});

function stopSend(str){
 var im="php+ajax实现图片文件上传实例代码";
 $("#msg").append(im);
}
 
upload.php

 $file=$_FILES['upfile'];
 $name=rand(0,500000).dechex(rand(0,10000)).".jpg";
 move_uploaded_file($file['tmp_name'],"upload/images/".$name);
//调用iframe父窗口的js 函数
 echo "<script>parent.stopSend('$name')</script>";
?>

方法三,原生态ajax文件上传

 代码如下 复制代码





    Html5 Ajax 上传文件
   




   
   

   
    浏览...
   
    上传

php代码

 代码如下 复制代码


if(isset($_FILES["myfile"]))
{
$ret = array();
$uploadDir = 'images'.DIRECTORY_SEPARATOR.date("Ymd").DIRECTORY_SEPARATOR;
$dir = dirname(__FILE__).DIRECTORY_SEPARATOR.$uploadDir;
file_exists($dir) || (mkdir($dir,0777,true) && chmod($dir,0777));
if(!is_array($_FILES["myfile"]["name"])) //single file
{
$fileName = time().uniqid().'.'.pathinfo($_FILES["myfile"]["name"])['extension'];
move_uploaded_file($_FILES["myfile"]["tmp_name"],$dir.$fileName);
$ret['file'] = DIRECTORY_SEPARATOR.$uploadDir.$fileName;
}
echo json_encode($ret);
}
?>

 

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!