您好,欢迎来到江西省计算机培训学院!
技术文摘当前位置:首页 >> 技术文摘
ajax jquery上传文件
发布时间:2015年5月17日 浏览:1644 次
 

今我在网上找了好久哟。。。才找到JQUERY方式的异步文件上传,赶紧记了下来。

实际上在用PHP上传文件时。。。只能用$_FILES形式,但是若我们只是单一的用JS方式取其ID,如<input id='img' type='file'>..document.getElementById('img').value或者jquery形式 的$("#img")都是不能正真实际上传的(但是还是有很多人这样做,刚开始时我也是)。

     可是功能上又要要求实现所谓的异步上传,怎么办呢??只能借助于第三方的组件,或者自己写一个。但如果是考虑开发时间,那以用第三方的,这里有一个不错的jQueryAjax文件上传的组件,是“ajaxfileupload.js",其组件下载地址为:http://www.phpletter.com/,下载完毕里面有一个php的应用demo,很容易看懂的。

     过程:

     首先引入JQUERY的主文件:注意引入jquery的时候只能引入这个,引入多个jquery文件会引起冲突!

<script type="text/javascript" src="jquery.js"></script>

<script type="text/javascript" src="ajaxfileupload.js"></script>

­

再写一个传值文件

­

<script type="text/javascript">[url='/cms/manage/newsajax/newsadd']url:'/cms/manage/newsajax/newsadd'[/url],

function ajaxFileUpload(){
$.ajaxFileUpload({
url:'uploadPhoto.php',
secureuri:false,
fileElementId:'upload_file',
dataType: 'text',
success: function (data, status){
alert(data);
if(data.indexOf("error")>= 0){
alert("
文件上传失败");
}else{
alert("here");
var upload=document.getElementById("upload");
upload.innerText="
文件已上传";    
var path=document.getElementById("path");    
path.value=data;
}
},

error: function (data, status, e)
{
alert(e);
}
}
)
}

             </script>

页面部分
<td colspan='1'><input type='file' name='upload_file'id='upload_file'/></td><td id='upload'><a href='javascript:void(0);'onclick='ajaxFileUpload()'>
上传照片</a>& lt;/td><td><input type='hidden'id='path'name='path'/></td>

       再服务器端时

­

           <?php
$upload_file=$_FILES["upload_file"]["name"];        //
获取文件名
$upload_tmp_file=$_FILES["upload_file"]["tmp_name"];      //
获取临时文件名
$upload_filetype=$_FILES["upload_file"]["type"];    //
获取文件类型
$upload_status=$_FILES["upload_file"]["error"];  //
获取文件出错情况
$uploadFlag=true;
if(is_uploaded_file($upload_tmp_file)){  
//echo   "
有文件上传!";  

function fileExtName ($fStr){/*
取得文件的扩展名并返回*/
$retval="";
$pt=strrpos($fStr,".");/*
取得.句号在文件名中的位置*/
if($pt) $retval=substr($fStr,$pt+1,strlen($fStr)-$pt);/*
.句号后面开始,取三个字符,就是扩展名*/
return($retval);
}
$ext=fileExtName($_FILES['upload_file']['name']);/*
调用上面的函数,并取得的扩展名*/
$ext=strtolower($ext);

$upload_dir=realpath('.').'\upload'; //
指定文件存储路径
if(file_exists($upload_dir) && is_dir($upload_dir)){
}else{
mkdir($upload_dir,0777);
}
// echo $upload_file." <BR>";
// echo $upload_tmp_file." <BR>";

switch($upload_status)
{
case 0:echo " ";break;
case 1:echo "
上传的文件超过了 php.ini upload_max_filesize 选项限制的值。";break;
case 2:echo "
上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。";break;
case 3:echo "
文件只有部分被上传。";break;
case 4:echo "
没有文件被上传。";break;
case 6:echo "
没有找到临时文件目录。";break;
case 7:echo "
文件写入失败。";break;
}                  //
分析文件出错情况并给出提示
$errorchar=array ("-"," ","~","!","@","#","$","%","^","&","(",")","+",",","
","","","","“","”","","","","","
——");
//
定义非法字符集
foreach($errorchar as $char)
{
if(strpos($upload_file,$char))
{
$upload_file=str_replace($char,"_",$upload_file);
//echo "
文件名中含有非法字符!已经替换为\"_\" <br>";
}
}//
循环排除替换文件名中的非法字符
$upload_path=$upload_dir."\\".date('Ymd_His')."_".rand(1,10000).".".$ext;

//$upload_dir$upload_file;  //
定义文件最终的存储路径和名称
//echo $upload_path." <br>";
if(is_uploaded_file($upload_tmp_file) ){

if(file_exists($upload_path)){

//echo "
同名文件已经存在,请修改你要上传的文件名!";
$uploadFlag=false;
//
检查是否有相同文件存在
}else if(move_uploaded_file($upload_tmp_file,$upload_path)){
//echo "";        //
把文件从文件临时目录移动到上传目录
$uploadFlag=true;
}else{
//echo"
文件上传失败。";
$uploadFlag=false;
}
}
$upload_path=strtr($upload_path,"\\","/");
}else{  
//echo   "
没有文件上传!";
$upload_path=null;    
}
if($upload_path!=null){
echo $upload_path;
}else{
echo "error";
}
?>
将文章分享到:
上一篇: 关于数据库事务隔离级别的介绍
下一篇: 全真网络实验机架
学院动态
联系方式
报名咨询热线:
13576968766
15070010500(毛老师)
15870000729(王老师)
官方邮箱:kxy@qdlhrhjz.com
招办热线:张老师
传  真:0791-88176246
   
热门资讯
全国免费热线:400-0791-361
电话:13576968766 张老师
传真:0791-88176246
邮箱:kxy@qdlhrhjz.com
地址:江西省南昌市上坊路382号(江西省科学院内)
软件工程师高级培训
Java软件工程师
Android工程师
企业应用软件测试工程师
思科/华为网络高级培训
思科网络工程师
华为网络工程师
Linux网络工程师
版权所有澳门巴黎人娱乐app © 2014 江西省计算机培训学院 赣ICP备05000706号