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.‘/‘;
}
$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 上传失败,位置错误!

时间: 2024-09-27 04:29:58

php上传文件的增强函数_php技巧的相关文章

php环境无法上传文件的解决方法_php技巧

一. 检查网站目录的权限. 上传目录是否有写入权限. 二. php.ini配置文件 php.ini中影响上传的有以下几处: file_uploads 是否开启 on 必须开启 是否允许HTTP文件上传 post_max_size = 8M PHP接受的POST数据最大长度.此设定也影响到文件上传. 要上传大文件,该值必须大于"upload_max_filesize" 如果配置脚本中激活了内存限制,"memory_limit"也会影响文件上传. 一般说来,"

无组件上传文件,一个函数搞定

函数|上传|无组件 本函数是用"化境ASP无组件上传程序2.0"上传文件.核心函数:<%'''''=============================='函数名:upfile'作用: 使用"化境上传组件"上传文件到服务器上'参数: file1 文件对象 ' savepath 文件要保存的相对路径,如"../"上一级上录,""同目录 ' maxsize 允许上传文件的最大值,单位KB.为0不限大小.' savetyp

PHP 文件上传源码分析(RFC1867)_php技巧

你总不至于在用户要上传头像的时候告诉用户"请打开FTP客户端,上传文件到http://www.jb51.net/uploads/中, 并以2dk433423l.jpg命名"吧? 而基于HTTP的上传,相对来说易用性和安全性上就比FTP要增强了很多. 可以应用的上传方式有PUT, WEBDAV, 和RFC1867三种, 本文将分析在PHP中,是如何基于RFC1867实现文件上传的. RFC1867 RCF1867是Form-based File Upload in HTML标准协议, R

PHP文件上传操作实例详解_php技巧

本文实例分析了PHP文件上传操作.分享给大家供大家参考,具体如下: 文件上传 发生在浏览器向服务器发出的请求中. 文件,对于浏览器来讲,就是表单中的一个特殊类型的数据而已. 浏览器表单中的数据,两种类型: 字符串类型(字节流编码) 文件类型(二进制编码),文件是表单数据中一部分 服务器角度: 在接受浏览器请求时,处理好表单内的数据.根据数据类型不同使用不同处理方法: 字符串类型,存储在$_POST变量中(内存) 文件型数据,存储在上传临时目录中 表单提交时,浏览器会默认的行为: 表单内的的内容都

PHP利用APC模块实现文件上传进度条的方法_php技巧

本文实例讲述了PHP利用APC模块实现文件上传进度条的方法.分享给大家供大家参考.具体分析如下: 以前的php5.2之前的版本是不能可使用APC模块的,因为之前的压根就没有这个APC模块,如果想使用APC模块实现上传进度条我们必须是php5.2或更高版本. 从5.2开始APC加入了一个叫APC_UPLOAD_PROGRESS的东东,解决了困扰大家已久的进度条问题.并且它把原来的上传时把临时文件全部缓存到内存改成了当临时文件达到设定值时就自动保存到硬盘,有效地改善了内存利用状况. 它的作用原理是在

PHP利用APC模块实现大文件上传进度条的方法_php技巧

php 大文件带进度的上传,一直是一个令php程序员很苦恼的问题.查询baidu .Google ,大体做带进度的上传方式为:flash+php,socket,apc+php等,下面我介绍了apc +php+ajax制作的带进度的上传,并贴出源码,希望对大家有用. Alternative PHP Cache(APC)是 PHP 的一个免费公开的优化代码缓存.它用来提供免费,公开并且强健的架构来缓存和优化 PHP 的中间代码.  在使用apc时候,先必须使用安装apc 模块.第一步:下载php_a

PHP文件上传类实例详解_php技巧

本文实例讲述了PHP文件上传类.分享给大家供大家参考,具体如下: 这里演示了FileUpload.class.php文件上传类,其中用到了两个常量,可在网站配置文件中定义: define('ROOT_PATH',dirname(__FILE__)); //网站根目录 define('UPDIR','/uploads/'); //上传主目录 具体代码如下: <?php //上传文件类 class FileUpload { private $error; //错误代码 private $maxsiz

PHP实现的多文件上传类及用法示例_php技巧

本文实例讲述了PHP实现的多文件上传类及用法.分享给大家供大家参考,具体如下: 1.upFiles.css.php 文件 <?php class UploadFiles{ private $maxsize = '1000000'; //允许上传文件最大长度 private $allowtype = array('jpg','png','gif','jpeg');//允许上传文件类型 private $israndfile = true;//是否随机文件名 private $filepath;//

上传文件先创建目录 再上传到目录里面去_php技巧

1,表单部分: 复制代码 代码如下: <html> <head> <title> my is upfile app!! </title> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> </head> <body> <form enctype="multipart/form-da