php 无刷新上传,PHP无刷新上传文件(非AJAX)

前言

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

教程

在这个例子中,会用到一个HTMLiframe标签,该标签介绍请进入:W3C

多余的话就不多说,直接上代码。

index.php

文件上传

function startUpload() {

document.getElementById('processing').innerHTML = 'loding...';

return true;

}

function stopUpload(rel){

var msg = ''+rel+'';

document.getElementById('processing').innerHTML = msg;

}

newfile.php

/*

* 该代码来自憧憬点滴记忆 https://licoy.cn/1863.html

* 转载请注明出处

*/

require "file.class.php";

$file = new FileUpload;

$file->Uploads();

$code = $file->GetErrorCode();

$dir = $file->GetUploadInfo();

?>

window.top.window.stopUpload('<?php echo dirname($_SERVER['REQUEST_URI'])."/".$dir['fileDir'] ?>');

下面分享一个我写的文件上传类,有获取上传信息,获取上传错误,获取上传错误注释等等功能。

file.class.php

/*

* 该代码来自憧憬点滴记忆 https://licoy.cn/1863.html

* 转载请注明出处

*/

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PHP AJAX上传文件是一种常流行的技术,可以轻松地实现文件上传功能。AJAX可以将文件上传过程分解为几个步骤,然后每一步都可以单独进行处理,使得上传更为方便快捷。 上传文件的过程包括文件的选择、上传过程和上传结果的显示。首先需要在HTML页面上添加一个文件上传的表单,然后使用JavaScript代码来调用PHP脚本并传递提交表单的数据。在后台的PHP脚本中,需要先验证文件的大小和类型,确保上传文件的安全性。如果验证通过,则将文件上传到服务器上,并返回上传结果给前端。在上传过程中,可以通过实时展示上传进度和上传结果,来提高用户体验。 PHP AJAX上传文件的优点是可以实现多文件同时上传、以及实时上传进度的展示,同时也可以进行数据的验证和处理。但是需要注意的是,如果上传的文件太大或者上传时间过长,可能会对服务器造成压力。因此,在上传大文件时,需要适当调整服务器的配置,以保证上传的高效性和稳定性。 ### 回答2: php ajax 上传文件是指使用Ajax技术,通过PHP后台实现文件上传功能。Ajax是一种异步请求方式,可以在不刷新整个页面的情况下与服务器进行通信。而PHP是一种后台语言,可以处理数据并生成动态内容。 实现php ajax上传文件的方法包括以下步骤: 1. 编写HTML页面,包括文件上传表单和Ajax代码。 2. 使用JavaScript获取上传文件的数据,并将其发送到服务器。 3. 在PHP后台处理文件上传请求,包括检测上传文件的类型、大小和重命名等。 4. 将上传的文件保存到指定位置,并向客户端返回上传结果。 需要注意的是,为了防止上传文件被滥用和攻击,应对上传文件的格式、大小和文件名等进行限制和验证,同时应对上传文件的存储路径进行限制和保护。 除此之外,php ajax上传文件还可以实现多文件上传上传进度条等功能,提高用户体验和交互性。 ### 回答3: PHPAjax可以结合使用来实现上传文件的功能。在HTML的form表单中,可以加入上传文件的input标签,然后在后台的PHP文件中实现文件上传的处理。 使用Ajax,可以通过Javascript来获取上传文件的表单对象,然后将其序列化为FormData,再通过Ajax异步传递到后台的PHP文件中进行处理。通过Ajax上传文件可以实现不刷新页面就可以进行文件上传的功能。 在PHP文件中,可以通过$_FILES全局变量来获取上传的文件信息,包括文件名、文件类型、文件大小等。同时,还需要对上传的文件进行相关的安全性验证,比如文件类型、大小、路径等。 在实现文件上传过程中,需要考虑上传的文件是否过大、是否有安全隐患等问题。为此,可以在上传文件前调用Ajax异步获取上传文件的信息,然后在PHP后台进行安全性验证和处理。 综上所述,PHP Ajax上传文件需要结合HTML表单、Javascript和PHP后台文件进行多级处理和验证,才能实现完整的上传文件功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值