如何在PHP中利用AjaxForm实现一个文件上传功能

发布时间:2020-12-18 14:52:38

来源:亿速云

阅读:94

作者:Leah

如何在PHP中利用AjaxForm实现一个文件上传功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

在使用ajaxForm方法之前,首先需要安装form.js的插件,网上有;

一、首先说用法,ajaxForm可以接收0或1个参数,该参数可以是一个变量、一个对象或回调函数,这个对象主要有以下参数:var object= {

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         //设置请求时间,超过该时间后,自动退出请求,单位(毫秒)。

}

ajaxForm js的code

$(function(){

$("form").ajaxForm(object);

})

实例具体代码code

htmlcodehtml PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/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){

var percentVal = 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);

var img = "files/"+data.pic;

$(".showimg").html("");

alert("上传成功!");

},

error:function(){

alert("上传失败");

}

});

$(".progress").hide();

});

php上传上传类upload.class.php文件<?php

date_default_timezone_set("PRC"); //设置时间区域

//上传类

class upload{

protected $file_path = "files"; //当前files存储文件夹

protected $file_size = 5120000; //5M 用户上传

/**

*检测文件是否为空

*/

public function check_file($get_file)

{

if (empty($get_file))

{

$type = "check_file";

$arr = array('error'=>'empty_name','type'=>$type);

echo json_encode($arr);

exit();

}

return true;

}

/**

*检测文件类型

*/

public function check_type($get_type)

{

if (( $get_type == ".docx" ) || ( $get_type == ".doc" )) {

//这里只是判断上传word文档可以自己添加

}else{

$type = "check_type";

$arr = array('error'=>'format','type'=>$type);

echo json_encode($arr);

exit();

}

return true;

}

/**

*检测文件大小

*/

public function check_size($get_file)

{

if ( $get_file != "" ) {

if ( $get_file > $this->file_size ) {

$arr = array('error'=>'large');

echo json_encode($arr);

exit();

}

}else{

return false;

exit();

}

return true;

}

/**

*文件保存

*/

public function save_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{

return false;

exit();

}

}

}

?>

ajax提交php处理文件upload.php<?php

include("upload.class.php");

$up_obj = new upload();

//获取上传文件名

$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){ //检查文件上传状态

echo json_encode($arr);

}

}

}

}

?>

关于如何在PHP中利用AjaxForm实现一个文件上传功能问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

php利用ajax文件上传,如何在PHP中利用AjaxForm实现一个文件上传功能相关推荐

  1. oracle竖线分隔符文件导入6,如何在sqlldr中倒入多字符分隔符文件

    如何在sqlldr中倒入多字符分隔符文件 今天有朋友询问: 我们...应用系统很多,它们之间要交换很多数据,目前是以文本方式交换,问题是文本的分隔符号是(|+|),为三个字符,主要是避免数据的混淆.. ...

  2. paraview vtk文件乱码_如何在ParaView中为一系列传统VTK文件设置自定义时间步长值?...

    我有一个legacy VTK files的序列,例如:file_0.vtk,file_1.vtk,file_2.vtk,我可以在ParaView中打开它作为文件_ .. vtk的时间序列(descri ...

  3. 怎么python把dat文件生成_如何在Python中编辑*.txt或*.dat文件信息?

    我是Python的初学者,有下一个"问题".如果你能帮助我,我会很高兴的) 我有一个*.dat文件(我们把它命名为file-1,第一行只是一个标题,我只在这里用来标记列),它看起来 ...

  4. php 输出图片给js,如何在php中利用croppic.js对图片进行剪切并上传

    如何在php中利用croppic.js对图片进行剪切并上传 发布时间:2021-01-30 16:41:02 来源:亿速云 阅读:92 作者:Leah 这篇文章将为大家详细讲解有关如何在php中利用c ...

  5. php中glob怎么用,如何在php中利用glob函数对文件进行遍历

    如何在php中利用glob函数对文件进行遍历 发布时间:2020-12-11 16:02:47 来源:亿速云 阅读:76 作者:Leah 如何在php中利用glob函数对文件进行遍历?相信很多没有经验 ...

  6. 利用 C# 中的 FileSystemWatcher 制作一个文件夹监控小工具

    利用 C# 中的 FileSystemWatcher 制作一个文件夹监控小工具 独立观察员 2020 年 12 月 26 日 前一段看到微信公众号 "码农读书" 上发了一篇文章&l ...

  7. android view gesturedetector,如何在Android中利用 GestureDetector进行手势检测

    如何在Android中利用 GestureDetector进行手势检测 发布时间:2020-11-26 16:15:21 来源:亿速云 阅读:92 作者:Leah 今天就跟大家聊聊有关如何在Andro ...

  8. 中查询一个文件夹下文件数量_如何在 Bash 中使用循环 | Linux 中国

    使用循环和查找命令批量自动对多个文件进行一系列的操作.-- Seth Kenlon(作者) 人们希望学习批处理命令的一个普遍原因是要得到批处理强大的功能.如果你希望批量的对文件执行一些指令,构造一个可 ...

  9. android开发 转跳功能,如何在Android中利用Intent实现一个页面跳转功能

    如何在Android中利用Intent实现一个页面跳转功能 发布时间:2021-02-20 17:06:31 来源:亿速云 阅读:113 作者:Leah 本篇文章为大家展示了如何在Android中利用 ...

最新文章

  1. Snagit9-12注册码
  2. 基于 EntityFramework 的数据库主从读写分离架构(1) - 原理概述和基本功能实现...
  3. 共建网络安全堤坝,守住网络安全底线
  4. map中只有一个值 获取_小学数学,为什么一个三角形中最多只有一个直角或一个钝角...
  5. 智能窗帘研究制作_基于51单片机智能窗帘的研究与设计
  6. 设置网页背景图片不显示
  7. 容器和云服务器集群,什么是docker集群与镜像
  8. 微信(QQ)截图时,无法保留鼠标右键菜单选项内容
  9. CentOS系统是什么
  10. simscape multibody仿真报错装配位置_大型结构件虚拟装配仿真软件,三维数字化分析,现场直接调整...
  11. Linux运维六:用户管理及用户权限设置
  12. 第一章 数学建模与误差分析
  13. 8个免费恶搞照片在线生成网站
  14. 单反光圈、快门和感光度的关系
  15. Windows 11 22H2 中文版、英文版 (x64、ARM64) 下载 (updated Jan 2023)
  16. CUDA指定GPU的使用方法
  17. 巧解决阿里云虚拟主机免费版被DDOS攻击问题
  18. 计算机网络题库类型 (建议收藏)
  19. GOM客户端插件自动登录源码
  20. 日志搜集、过滤及推送处理框架logstash及fluentd总结

热门文章

  1. 前端学习(2372):uni-ui库
  2. 前端学习(2167):前端路由和后端路由
  3. 前端学习(1428):ajax封装三
  4. java面试题33 Math.round(11.5) 等于多少 (). Math.round(-11.5) 等于多少 ( ).
  5. mybatis学习(26):插入功能(插入数据)
  6. html:(11):address和code标签
  7. python利用缩进写模块_Python之缩进块
  8. [JSOI 2015] 子集选取
  9. 【软工项目组】第九次会议
  10. java io之图片存取