`
xfcode
  • 浏览: 23402 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

php上传文件增强函数

    博客分类:
  • php
 
阅读更多
php文件上传的增强函数首先变得傻瓜简单化,但并不是该函数的简单化就影响他的超强功能,并且加上了强大的除错功能这是一函数,当然你可以把它变成一个类的方法!

表单中file对象,比如说$_FILES['doc'],$path为保存的路径,$type为限制上传的类型(他是一个数组,比如说限制上传doc和docx和格式,那这个参数可以填array(“doc”,”.docx”),而且扩展名前有无”.”不作要求)。
代码:
<?php 
function upload($file,$path,$type){ 
$state = array(); 
$state['error'] = "true"; 
$alltype = ""; // 所有可以上传的类型,用"/"连接起来 
$path = trim($path); 
//为$path末尾加上"/" 
if(strlen(strrchr($path,‘/‘)) <= 1){ 
$path .= "/"; 
} 
//为类型加上开头“.” 
//将所有类型合成字符串,用"/"连接起来<span id="more-78"></span> 
foreach($type as $key=>$typeone){ 
$type[$key] = $typeone = trim($typeone); 
if(strlen(strchr($typeone,".")) != strlen($typeone)){ 
$type[$key] = ".".$typeone;} 
$alltype .= $typeone.‘/‘; 
} www.jbxue.com
$alltype = substr($alltype,0,strlen($alltype)-1); //去掉最后的“/” 
if(empty($file['name'])){ 
$state['error'] = "没有上传{$alltype}类型文件!"; 
$state['errorid'] = 8; 
return $state; 
} else { 
if (!$file['error']) { 
$state['name'] = $file['name']; 
$state['type'] = strrchr($state['name'],‘.‘); 
if(in_array($state['type'],$type)){ 
$time = date("U"); 
$state['upname'] = $time.rand(1000,9999).$state['type']; //文件命名 
if(copy($file['tmp_name'],$path.$state['upname'])){ 
$state['time'] = date("U"); //上传的时间 
$state['error'] = false; 
return $state; 
} else { 
switch($file(‘error‘)){ 
case 1: $state['error'] = $state['name']."上传失败,文件大小超出了服务器的空间大小!";$state['errorid'] = 1;return $state; 
case 2: $state['error'] = $state['name']."上传失败,要上传的文件大小超出浏览器限制!";$state['errorid'] = 2;return $state; 
case 3: $state['error'] = $state['name']."上传失败,文件仅部分被上传!";$state['errorid'] = 3;return $state; 
case 4: $state['error'] = $state['name']."上传失败,没有找到要上传的文件!";$state['errorid'] = 4;return $state; 
case 5: $state['error'] = $state['name']."上传失败,服务器临时文件夹丢失!";$state['errorid'] = 5;return $state; 
case 6: $state['error'] = $state['name']."上传失败,文件写入到临时文件夹出错!";$state['errorid'] = 6;return $state; 
default: $state['error'] = $state['name']."上传失败,位置错误!";$state['errorid'] = 10;return $state; 
} 
} 
} else { 
$state['error'] = $state['name']."上传失败!不符合所要上传的文件类型!({$alltype})"; 
$state['errorid'] = 10; 
return $state; 
} 
} 
} 
?> 


返回值为一数组
$key value
error 错误详情
errorid 错误id(出现错误才有值)
type 文件扩展名(扩展名前带“.”)
upname 上传的文件名
time 上传的时间(从 Unix 纪元(1970-01-01 00:00)开始至今的秒数)

错误类型
errorid error
false //上传成功
1 上传失败,文件大小超出了服务器的空间大小!
2 上传失败,要上传的文件大小超出浏览器限制!
3 上传失败,文件仅部分被上传!
4 上传失败,没有找到要上传的文件!
5 上传失败,服务器临时文件夹丢失!
6 上传失败,文件写入到临时文件夹出错!
8 没有上传该类型文件! //表单中file对象为空
10 上传失败,位置错误!
分享到:
评论

相关推荐

    php上传文件的增强函数

    根据提供的文件信息,这里详细讲解了PHP上传文件增强函数的实现细节和工作原理。 首先,函数的目的是为了简化文件上传的过程,使上传功能变得“傻瓜简单”,但同时保证了功能的强大性和健壮性。函数中增加了强大的...

    PHP 简单实现文件上传、保存、下载的功能(云盘)

    在本项目中,"PHP 简单实现文件上传、保存、下载的功能(云盘)",我们主要关注的是如何利用PHP构建一个基本的云存储服务,让用户能够在自己的账户空间内进行文件的操作。以下是对涉及的技术点的详细解释: 1. **PHP*...

    php上传文件

    PHP中处理文件上传的核心函数是`$_FILES`全局数组,它包含了关于上传文件的所有信息,如临时文件名、文件大小、错误代码等。例如: ```php if(isset($_POST["submit"])) { $target_dir = "uploads/"; $target_...

    易语言上传文件源码

    在PHP 5.2版本之前,文件上传功能可能存在一些限制,比如对上传文件大小的限制。如果在PHP 5.2以下的版本出现上传失败的情况,可能是因为服务器配置的问题,例如`upload_max_filesize`和`post_max_size`设置得过小,...

    PHP实现无FTP工具上传文件

    // 上传文件到FTP服务器 ``` 5. `ftp_close()`:关闭FTP连接。 ```php ftp_close($ftp_conn); // 关闭FTP连接 ``` 在实际应用中,我们还需要处理各种异常情况,例如检查连接和登录是否成功,处理文件上传失败等...

    文件批量上传 tp+layui

    在ThinkPHP框架中,文件上传主要通过`request`对象的`file`方法来获取上传的文件信息,然后利用PHP内置的`move_uploaded_file`函数将临时文件移动到服务器上的目标位置。为了支持批量上传,开发者需要遍历`file`方法...

    PHP的AJAX技术实现文件异步上传

    在现代Web应用程序中,异步文件上传是一项常见且必要的功能,它允许用户在不刷新整个页面的情况下上传文件。然而,传统的XMLHttpRequest对象无法直接处理文件上传,因为它们不支持二进制数据流。因此,我们需要结合...

    php支持单个或者多个文件上传类.zip

    在服务器端,通过`$_FILES['filename']`来访问上传文件的信息,然后使用`move_uploaded_file()`移动文件到目标位置。 3. **多个文件上传**: HTML5引入了`multiple`属性,允许用户在文件输入框中选择多个文件。PHP...

    PHP上传图片,可剪切

    `$_FILES`全局数组存储了所有上传文件的信息,如文件名、大小、类型等。例如,如果表单字段名为`image`,则`$_FILES['image']`将包含该文件的相关信息。 然后,我们需要检查文件是否上传成功,这可以通过`$_FILES['...

    文件上传php类

    可以通过检查文件扩展名、使用`move_uploaded_file()`函数移动文件而不是`copy()`或`fopen()`,以及限制可接受的文件类型和大小来增强安全性。 7. **错误处理和反馈** 前后端都需要提供良好的错误处理机制,确保...

    asp上传、php上传、.net上传、多文件上传

    在本文中,我们将深入探讨四种主要的文件上传技术:ASP上传、PHP上传、.NET上传以及多文件上传,并结合提供的压缩包文件名称"CFUpload121"来分析相关知识点。 首先,ASP(Active Server Pages)是一种微软开发的...

    php上传文件 自己写的代码可以正确的运行,保证没有问题 ,可以下来看看

    - **文件类型检查**: 使用`mime_content_type()`或`finfo_file()`检查上传文件的实际类型,防止上传恶意脚本(如PHP、JavaScript)。 - **文件大小限制**: 设置`max_file_uploads`,`upload_max_filesize`和`post_...

    PHP实例开发源码—PHP文件批量上传客户端免费组件 for php.zip

    5. **客户端组件**: 提供的客户端可能是一个HTML页面或JavaScript应用,利用AJAX技术异步上传文件,增强用户体验。它可能使用了如jQuery, Axios, or Fetch API等库来处理异步请求。 6. **多文件上传**: 使用HTML5的...

    SWFUpload 异步文件上传

    支持一次选择并上传多个文件,增强了用户体验。用户不再需要逐个选择文件,可以一次性处理一批文件,提高上传效率。 4. **与PHP集成** 压缩包中的“支持php”标签表明SWFUpload可以与PHP服务器端脚本无缝集成,...

    基于wampserver2.5的PHP上传读取数据 文件包

    【基于WampServer2.5的PHP上传读取数据文件包】是一个用于本地开发环境的工具,它结合了Apache服务器、MySQL数据库和PHP解释器,为开发者提供了在Windows平台上搭建Web应用的便捷途径。WampServer2.5是这个集成环境...

    ajaxphp上传文件

    // 如果所有检查都通过,尝试上传文件 if ($uploadOk == 0) { echo "文件未上传。"; } else { if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) { echo "文件 ". htmlspecialchars( basename...

    jquery文件上传绝对可用带进度条

    总的来说,通过结合jQuery、PHP和Uploadify,我们可以构建一个高效、直观的文件上传系统,其中的进度条功能增强了用户的交互体验,使得文件上传过程更加透明和可控。在实际开发中,可以根据具体需求进行功能扩展和...

    dhtmlxVault多文件上传

    dhtmlxVault是一款强大的JavaScript组件,专为在Web应用程序中实现多文件上传功能而设计。这个组件基于Ajax技术,提供了一种用户友好的界面,让用户能够方便地上传多个文件到服务器,无需刷新整个页面。dhtmlxVault...

    Jquery异步上传 ajax上传 php异步上传

    在PHP中,`$_FILES`全局数组包含了上传文件的信息: ```php $file = $_FILES['file']; $fileName = $file['name']; $fileTmpName = $file['tmp_name']; $fileSize = $file['size']; $fileError = $file['error']; /...

Global site tag (gtag.js) - Google Analytics