Dragon
真诚欢迎您的来访,留言,投稿!欢迎(Ctrl+D)收藏并经常访问本站 --- 3uyx.com
  • 真诚欢迎您的来访,留言,投稿!欢迎(Ctrl+D)收藏并经常访问本站 --- 3uyx.com
adminAdmin  2024-07-05 10:49 沃付网络 隐藏边栏 |   抢沙发  9 
文章评分 0 次,平均分 0.0

前言

在 PHP 中,我们一般写的 form 表单都是会进行跳转到另外一个页面进行数据操作的,其中我们也可以用到例如像 Ajax 一样的技术来让数据进行无刷新的操作,这次就分享一下非 Ajax 无刷新上传文件的教程。

教程

在这个例子中,会用到一个 HTMLiframe 标签,该标签介绍请进入:W3C
多余的话就不多说,直接上代码。

index.php

<!DOCTYPE html>
<meta charset="utf-8" />
<title> 文件上传 </title>
<script type="text/javascript">
        function startUpload() {document.getElementById('processing').innerHTML = 'loding...';
            return true;
        }
        function stopUpload(rel){
          var msg = '<img style="width: 300px;height: 200px;"src="'+rel+'"/>';
            document.getElementById('processing').innerHTML = msg;
        }
    </script>
<body>
	<div id="processing"></div>
	<form method="post" enctype="multipart/form-data" action="newfile.php" target="form-target" onsubmit="startUpload();">
		<input type="file" name="file" />
		<input type="submit" name="sub" value="上传" />
	</form>
	<iframe style="width:0; height:0; border:0;" name="form-target"></iframe>
</body>

newfile.php

<?php
/*
 * 该代码来自憧憬点滴记忆 https://licoy.cn/1863.html
 * 转载请注明出处
 */
require "file.class.php";
$file = new FileUpload;
$file->Uploads();
$code = $file->GetErrorCode();
$dir = $file->GetUploadInfo();
?>
<script type="text/javascript">
window.top.window.stopUpload('<?php echo dirname($_SERVER['REQUEST_URI'])."/".$dir['fileDir'] ?>');
</script>
下面分享一个我写的文件上传类,有获取上传信息,获取上传错误,获取上传错误注释等等功能。

file.class.php

class FileUpload{
	/*
	 * 文件上传信息
	 */
	private $fileName;	// 文件名
	private $fileType;	// 文件类型
	private $fileSize;	// 文件大小
	private $fileTmpName;	// 文件临时存储位置
	private $fileError;	// 上传错误信息
	private $otherError; // 其他错误信息
	private $fileDir; // 最终路径
	/*
	 * 文件上传设置
	 */
	 private $path = 'uploads';	// 文件上传位置
	 private $type = array('jpg','png','gif','jpeg','zip','mp4');						// 允许上传的文件类型
	 private $size = 20480000; // 字节为单位
	 private $randName = TRUE; // 随机名,为 false 关闭
	 /*
	  * 构造函数
	  */
	 public function __construct(){$this->fileName = $_FILES["file"]["name"];
		$this->fileType = $_FILES["file"]["type"];
		$this->fileSize = $_FILES["file"]["size"];
		$this->fileTmpName = $_FILES["file"]["tmp_name"];
		$this->fileError = $_FILES["file"]["error"];
		if($this->randName){$this->fileName = date("Y-m-d-H-i-s",time()).".".$this->fileTypeName();}
	 }
	 /*
	  * 文件上传
	  */
	 public function Uploads(){if($this->checkFileSize()){if($this->checkFileType()){if($this->checkFileDir()){
	 					$this->fileDir = $this->path."/".$this->fileName;
	 					if(!move_uploaded_file($this->fileTmpName,$this->fileDir)){
	 						$this->otherError = 0;	
	 						return false;
	 					}
						else{
							$this->otherError = 1;
							return true;
						}
	 				}
	 			}
	 		}
	 }
	 /*
	  * 获取文件后缀名
	  */
	 private function fileTypeName(){$typeArr = explode(".", $this->fileName);
		$count = count($typeArr);
		return $typeArr[$count-1];
	 }
	 /*
	  * 检测文件大小是否符合设置
	  */
	 private function checkFileSize(){if($this->fileSize < $this->size){return true;}
			else{
				$this->otherError = -1;
				return false;
			}
	 }
	 /*
	  * 检测文件类型是否符合规定
	  */
	 private function checkFileType(){$typeArr = explode(".", $this->fileName);
		$count = count($typeArr);
	 	if(in_array(strtolower($typeArr[$count-1]), $this->type)) {return true;}else {
	        $this->otherError = -2;
	        return false;
  		}
	 }
	 /*
	  * 检测目录是否存在
	  */
	 private function checkFileDir(){if(file_exists($this->path)){return true;}
		else{
			$this->otherError = -3;
	        return false;
		}
	 }
	 /*
	  * 不存在目录可调用此方法创建文件夹
	  */
	 public function mkdirs(){mkdir($this->path);
		chmod($this->path,0777);
	 }
	 /*
	  * 获取错误信息
	  */
	public function GetError(){switch($this->otherError){
			case -1 : $errorStr = "文件过大!";break;
			case -2 : $errorStr = "文件不符合规定!";break;
			case -3 : $errorStr = "不存在上传目录!";break;
			case 1 : $errorStr = "上传成功!";break;
			case 0 : $errorStr = "上传失败!";break;
			default : $errorStr = '未知';
		}
		return $errorStr;
	}
	/*
	 * 获取错误码
	 */
	 public function GetErrorCode(){return $this->otherError;}
	/*
	 * 获取文件上传信息
	 */
	 public function GetUploadInfo(){
	 	$infoArr = array (
	 		'fileName' => $this->fileName,
			'fileType' => $this->fileType,
			'fileSize' => $this->fileSize,
			'fileTmpName' => $this->fileTmpName,
			'fileError' => $this->fileError,
			'fileDir' => $this->fileDir
	 	);
		return $infoArr;
	 }
	 
 
}//FileUploads_Class_End

声明:本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

admin
Admin 关注:0    粉丝:0
这个人很懒,什么都没写

发表评论

扫一扫二维码分享
×