PHP和AJAX上传文件
ajax
php
上传
忘记
文件
文章
写这篇文章主要是不要忘记,而且这种上传还很简单 第一步在视图页面引入两个JS。jquery.js 和 ajaxupload.js script type=text/javascript src=? echo URL_PATH; ?static/admin/js/jquery-1.7.2.js/scriptscript type=text/javascript src=? echo URL_PATH;
写这篇文章主要是不要忘记,而且这种上传还很简单
第一步在视图页面引入两个JS。jquery.js 和 ajaxupload.js
<script type="text/javascript" src="<?%20echo%20URL_PATH;%20?>static/admin/js/jquery-1.7.2.js"></script> <script type="text/javascript" src="<?%20echo%20URL_PATH;%20?>static/admin/js/ajaxupload.js"></script>
登录后复制
第二步写个JS
<script type="text/javascript"> $(document).ready(function(){ //图片上传 new AjaxUpload('#select',{ action : '<?php echo URL_PATH . 'comm/upload_img'; ?>', onSubmit : function(){ $("#select").attr("value","上传中..."); this.disable(); }, onComplete : function(file,ext){ alert(ext); var obj=eval('('+ext+')'); if(obj.error==1){ alert(obj.url); } else{ $("#litpic").attr("value",obj.url); } $("#select").attr("value","上传"); this.enable(); } } ); }); </script>
登录后复制
第三步在相应的处理上传文件的PHP文件中处里这个JS提交的action。这里我要介绍这个PHP上传类
class Uploader { private $fileField; //文件域名 private $file; //文件上传对象 private $config; //配置信息 private $oriName; //原始文件名 private $fileName; //新文件名 private $fullName; //完整文件名,即从当前配置目录开始的URL private $UrlName; //文件名的URL形式 private $fileSize; //文件大小 private $fileType; //文件类型 private $stateInfo; //上传状态信息, private $stateMap = array( //上传状态映射表,国际化用户需考虑此处数据的国际化 "SUCCESS" , //上传成功标记,在UEditor中内不可改变,否则flash判断会出错 "文件大小超出 upload_max_filesize 限制" , "文件大小超出 MAX_FILE_SIZE 限制" , "文件未被完整上传" , "没有文件被上传" , "上传文件为空" , "POST" => "文件大小超出 post_max_size 限制" , "SIZE" => "文件大小超出网站限制" , "TYPE" => "不允许的文件类型" , "DIR" => "目录创建失败" , "IO" => "输入输出错误" , "UNKNOWN" => "未知错误" , "MOVE" => "文件保存时出错" ); /** * 构造函数 * @param string $fileField 表单名称 * @param array $config 配置项 * @param bool $base64 是否解析base64编码,可省略。若开启,则$fileField代表的是base64编码的字符串表单名 */ public function __construct( $fileField , $config , $base64 = false ) { $this->fileField = $fileField; $this->config = $config; $this->stateInfo = $this->stateMap[ 0 ]; $this->upFile( $base64 ); } /** * 上传文件的主处理方法 * @param $base64 * @return mixed */ private function upFile( $base64 ) { //处理base64上传 if ( "base64" == $base64 ) { $content = $_POST[ $this->fileField ]; $this->base64ToImage( $content ); return; } //处理普通上传 $file = $this->file = $_FILES[ $this->fileField ]; if ( !$file ) { $this->stateInfo = $this->getStateInfo( 'POST' ); return; } if ( $this->file[ 'error' ] ) { $this->stateInfo = $this->getStateInfo( $file[ 'error' ] ); return; } if ( !is_uploaded_file( $file[ 'tmp_name' ] ) ) { $this->stateInfo = $this->getStateInfo( "UNKNOWN" ); return; } $this->oriName = $file[ 'name' ]; $this->fileSize = $file[ 'size' ]; $this->fileType = $this->getFileExt(); if ( !$this->checkSize() ) { $this->stateInfo = $this->getStateInfo( "SIZE" ); return; } if ( !$this->checkType() ) { $this->stateInfo = $this->getStateInfo( "TYPE" ); return; } $this->fullName = $this->getFolder() . '/' . $this->getName(); $this->UrlName .= '/' . $this->fileName; if ( $this->stateInfo == $this->stateMap[ 0 ] ) { if ( !move_uploaded_file( $file[ "tmp_name" ] , $this->fullName ) ) { $this->stateInfo = $this->getStateInfo( "MOVE" ); } } } /** * 处理base64编码的图片上传 * @param $base64Data * @return mixed */ private function base64ToImage( $base64Data ) { $img = base64_decode( $base64Data ); $this->fileName = time() . rand( 1 , 10000 ) . ".png"; $this->fullName = $this->getFolder() . '/' . $this->fileName; if ( !file_put_contents( $this->fullName , $img ) ) { $this->stateInfo = $this->getStateInfo( "IO" ); return; } $this->oriName = ""; $this->fileSize = strlen( $img ); $this->fileType = ".png"; } /** * 获取当前上传成功文件的各项信息 * @return array */ public function getFileInfo() { return array( "originalName" => $this->oriName , "name" => $this->fileName , "baseName" => $this->fullName , "urlName" => $this->UrlName , "size" => $this->fileSize , "type" => $this->fileType , "state" => $this->stateInfo ); } /** * 上传错误检查 * @param $errCode * @return string */ private function getStateInfo( $errCode ) { return !$this->stateMap[ $errCode ] ? $this->stateMap[ "UNKNOWN" ] : $this->stateMap[ $errCode ]; } /** * 重命名文件 * @return string */ private function getName() { return $this->fileName = time() . rand( 1 , 10000 ) . $this->getFileExt(); } /** * 文件类型检测 * @return bool */ private function checkType() { return in_array( $this->getFileExt() , $this->config[ "allowFiles" ] ); } /** * 文件大小检测 * @return bool */ private function checkSize() { return $this->fileSize config[ "maxSize" ] * 1024 ); } /** * 获取文件扩展名 * @return string */ private function getFileExt() { return strtolower( strrchr( $this->file[ "name" ] , '.' ) ); } /** * 按照日期自动创建存储文件夹 * @return string */ private function getFolder() { $pathStr = $this->config[ "savePath" ]; if ( strrchr( $pathStr , "/" ) != "/" ) { $pathStr .= "/"; } $pathStr .= date( "Ymd" ); if ( !file_exists( $pathStr ) ) { if ( !mkdir( $pathStr , 0777 , true ) ) { return false; } } $this->UrlName .= $this->config['saveUrl'] . date( "Ymd" ); return $pathStr; } }
登录后复制
//上传配置 $config = array( "saveUrl" => URL_PATH . "attached/" , "savePath" => ROOT_PATH . "/attached/" , //保存路径 "allowFiles" => array('.gif', '.jpg', '.jpeg', '.png', '.bmp' ) , //文件允许格式 "maxSize" => 2000 //文件大小限制,单位KB ); //生成上传实例对象并完成上传 $up = new Uploader( "userfile" , $config ); $info = $up->getFileInfo();
登录后复制
然后返回到AJAX的JS处理上传。
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
刺客信条阴影:贝壳谜语解决方案
1 周前
By DDD
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
在哪里可以找到原子中的起重机控制钥匙卡
1 周前
By DDD

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

CakePHP 是 PHP 的开源框架。它的目的是使应用程序的开发、部署和维护变得更加容易。 CakePHP 基于类似 MVC 的架构,功能强大且易于掌握。模型、视图和控制器 gu

登录 CakePHP 是一项非常简单的任务。您只需使用一项功能即可。您可以记录任何后台进程(如 cronjob)的错误、异常、用户活动、用户采取的操作。在 CakePHP 中记录数据很容易。提供了 log() 函数
