如何在PHP中利用AjaxForm实现一个文件上传功能
发布时间:-12-18 14:52:38
来源:亿速云
阅读:94
作者:Leah
如何在PHP中利用AjaxForm实现一个文件上传功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
在使用ajaxForm方法之前,首先需要安装form.js的插件,网上有;
一、首先说用法,ajaxForm可以接收0或1个参数,该参数可以是一个变量、一个对象或回调函数,这个对象主要有以下参数:varobject={
url:url,//form提交数据的地址
type:type,//form提交的方式(method:post/get)
target:target,//服务器返回的响应数据显示的元素(Id)号
beforeSerialize:function(){}//序列化提交数据之前的回调函数
beforeSubmit:function(){},//提交前执行的回调函数
success:function(){},//提交成功后执行的回调函数
error:function(){},//提交失败执行的函数
dataType:null,//服务器返回数据类型
clearForm:true,//提交成功后是否清空表单中的字段值
restForm:true,//提交成功后是否重置表单中的字段值,即恢复到页面加载时的状态
timeout:6000//设置请求时间,超过该时间后,自动退出请求,单位(毫秒)。
}
ajaxFormjs的code
$(function(){
$("form").ajaxForm(object);
})
实例具体代码code
htmlcodehtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd">
PHP+Ajax异步带进度条上传文件实例_php
文件上传
文件上传
这里只是一个ajax+php+ajaxForm上传文件word文档例子
选择上传文件名:
10%Complete
$(function(){
$("#myupload").ajaxForm({
dataType:'json',
beforeSend:function(){
$(".progress").show();
},
uploadProgress:function(event,position,total,percentComplete){
varpercentVal=percentComplete+'%';
$(".progress-bar").width(percentComplete+'%');
$(".progress-bar").html(percentVal);
$(".sr-only").html(percentComplete+'%');
},
success:function(data){
$(".progress").hide();
if(data.error=="empty_name"){
alert("文件上传非法,上传失败!");
exit();
};
if(data.error=="large"){
alert("图片上传不能大于2M,上传失败!");
exit();
};
if(data.error=="format"){
alert("图片格式错误,上传失败");
exit();
};
//$(".files").html(""+data.name+"("+data.size+"k)删除");
$(".files").html("文件名:"+data.name+"del大小:"+data.size);
varimg="files/"+data.pic;
$(".showimg").html("");
alert("上传成功!");
},
error:function(){
alert("上传失败");
}
});
$(".progress").hide();
});
php上传上传类upload.class.php文件<?php
date_default_timezone_set("PRC");//设置时间区域
//上传类
classupload{
protected$file_path="files";//当前files存储文件夹
protected$file_size=5120000;//5M用户上传
/**
*检测文件是否为空
*/
publicfunctioncheck_file($get_file)
{
if(empty($get_file))
{
$type="check_file";
$arr=array('error'=>'empty_name','type'=>$type);
echojson_encode($arr);
exit();
}
returntrue;
}
/**
*检测文件类型
*/
publicfunctioncheck_type($get_type)
{
if(($get_type==".docx")||($get_type==".doc")){
//这里只是判断上传word文档可以自己添加
}else{
$type="check_type";
$arr=array('error'=>'format','type'=>$type);
echojson_encode($arr);
exit();
}
returntrue;
}
/**
*检测文件大小
*/
publicfunctioncheck_size($get_file)
{
if($get_file!=""){
if($get_file>$this->file_size){
$arr=array('error'=>'large');
echojson_encode($arr);
exit();
}
}else{
returnfalse;
exit();
}
returntrue;
}
/**
*文件保存
*/
publicfunctionsave_file($file_type,$file_tmp_name)
{
$rand=rand(1000,9999);
$pics=date('YmdHis').$rand.$file_type;
$path=$this->file_path."/".$pics;
$result=move_uploaded_file($file_tmp_name,$path);
if($result){
return$pics;
}else{
returnfalse;
exit();
}
}
}
?>
ajax提交php处理文件upload.php<?php
include("upload.class.php");
$up_obj=newupload();
//获取上传文件名
$get_fileName=$_FILES['mypic']['name'];
$get_fileSize=$_FILES['mypic']['size'];
$get_TmpFiles=$_FILES['mypic']['tmp_name'];
$get_fileType=strstr($get_fileName,'.');
$check_result=$up_obj->check_file($get_fileName);
if($check_result){
$result_type=$up_obj->check_type($get_fileType);//检查文件类型
if($result_type){
$result_size=$up_obj->check_size($get_fileSize);//检查文件大小
if($result_size){
$pics=$up_obj->save_file($get_fileType,$get_TmpFiles);//文件上传保存
$size=round($get_fileSize/1024,2);
$arr=array(
'name'=>$get_fileName,
'pic'=>$pics,
'size'=>$size,
'error'=>2,
'list'=>$_POST['list']
);
if($pics){//检查文件上传状态
echojson_encode($arr);
}
}
}
}
?>
关于如何在PHP中利用AjaxForm实现一个文件上传功能问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。