这篇文章主要为大家详细介绍了php 文件上传函数的超详细示例,具有一定的参考价值,可以用来参考一下。

下面跟随512笔记的小编来举个例子吧。

经测试代码如下:

/**

* 文件上传

*

* 返回的数组索引

* mime_type 文件类型

* size 文件大小(单位KB)

* file_path 文件路径

* width 宽度

* height 高度

* 可选值(仅在上传文件是图片且系统开启缩略图时起作用)

* thum_file 缩略图的路径

* thum_width 缩略图宽度

* thum_height 缩略图高度

* thum_size 缩略图大小(单位KB)

*

* @param string $fileName 文件名

* @param string $errorNum 错误码:$_FILES['error']

* @param string $tmpFile 上传后的临时文件

* @param string $fileSize 文件大小 KB

* @param array $type 允许上传的文件类型

* @param boolean $isIcon 是否为上传头像

* @param boolean $is_thumbnail 是否生成缩略图

* @return array 文件数据 索引

* @author 512笔记 www.512pic.com

*

*/

function upload($fileName, $errorNum, $tmpFile, $fileSize, $type, $isIcon = false, $is_thumbnail = true) {

if ($errorNum == 1) {

return '100'; //文件大小超过系统限制

} elseif ($errorNum > 1) {

return '101'; //上传文件失败

}

$extension = getFileSuffix($fileName);

if (!in_array($extension, $type)) {

return '102'; //错误的文件类型

}

if ($fileSize > Option::UPLOADFILE_MAXSIZE) {

return '103'; //文件大小超出emlog的限制

}

$file_info = array();

$file_info['file_name'] = $fileName;

$file_info['mime_type'] = get_mimetype($extension);

$file_info['size'] = $fileSize;

$file_info['width'] = 0;

$file_info['height'] = 0;

$uppath = Option::UPLOADFILE_PATH . gmdate('Ym') . '/';

$fname = substr(md5($fileName), 0, 4) . time() . '.' . $extension;

$attachpath = $uppath . $fname;

$file_info['file_path'] = $attachpath;

if (!is_dir(Option::UPLOADFILE_PATH)) {

@umask(0);

$ret = @mkdir(Option::UPLOADFILE_PATH, 0777);

if ($ret === false) {

return '104'; //创建文件上传目录失败

}

}

if (!is_dir($uppath)) {

@umask(0);

$ret = @mkdir($uppath, 0777);

if ($ret === false) {

return '105'; //上传失败。文件上传目录(content/uploadfile)不可写

}

}

doAction('attach_upload', $tmpFile);

// 生成缩略图

$thum = $uppath . 'thum-' . $fname;

if ($is_thumbnail) {

if ($isIcon && resizeImage($tmpFile, $thum, Option::ICON_MAX_W, Option::ICON_MAX_H)) {

$file_info['thum_file'] = $thum;

$file_info['thum_size'] = filesize($thum);

$size = getimagesize($thum);

if ($size) {

$file_info['thum_width'] = $size[0];

$file_info['thum_height'] = $size[1];

}

resizeImage($tmpFile, $uppath . 'thum52-' . $fname, 52, 52);

} elseif (resizeImage($tmpFile, $thum, Option::IMG_MAX_W, Option::IMG_MAX_H)) {

$file_info['thum_file'] = $thum;

$file_info['thum_size'] = filesize($thum);

$size = getimagesize($thum);

if ($size) {

$file_info['thum_width'] = $size[0];

$file_info['thum_height'] = $size[1];

}

}

}

if (@is_uploaded_file($tmpFile)) {

if (@!move_uploaded_file($tmpFile, $attachpath)) {

@unlink($tmpFile);

return '105'; //上传失败。文件上传目录(content/uploadfile)不可写

}

@chmod($attachpath, 0777);

}

// 如果附件是图片需要提取宽高

if (in_array($file_info['mime_type'], array('image/jpeg', 'image/png', 'image/gif', 'image/bmp'))) {

$size = getimagesize($file_info['file_path']);

if ($size) {

$file_info['width'] = $size[0];

$file_info['height'] = $size[1];

}

}

return $file_info;

}

/*** 来自512笔记(www.512pic.com) ***/

注:关于php 文件上传函数的超详细示例的内容就先介绍到这里,更多相关文章的可以留意512笔记的其他信息。

关键词:文件上传

您可能感兴趣的文章

php上传文件测试代码,php 文件上传函数的超详细示例相关推荐

  1. Matlab pcode p文件 p代码 p文件代转m文件 被加密的p文件转换成.m文件

    Matlab pcode p文件 p代码 p文件代转m文件 被加密的p文件转换成.m文件 前言 在我们使用MATLAB时候,通常会用到一些M脚本进行辅助使用,缩短了我们在平常工作时候的效率,但是M脚本 ...

  2. Matlab pcode p文件 p代码 p文件代转m文件,pcode文件解密工具

    Matlab pcode p文件 p代码 p文件代转m文件,pcode文件解密工具,p文件转m文件 p代码还原 p代码解密 ID:461694254920131

  3. java 中传输文件的代码_java文件上传Demo(必看篇)

    说到文件上传我们要做到: 1.引入两个包:commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar 2.将form改为上传文件模式:enctype=" ...

  4. 如何使用git上传文件到gitee以及大项目文件(超过100MB的文件如传送)remote: error: File: f422c55c723a183a1944cbec840c0171042(超详细)

    目录 1.首先我们要先在gitee上创建一个仓库 2.其次要对仓库进行配置 3.仓库创建完成 4.配置git项目 5.提交文件到gitee的gitTeach仓库 超过100MB的大文件传送的方法 1. ...

  5. php上传头像的代码,php头像上传预览实例代码

    说道上传图片,大家并不陌生,不过,在以后开发的项目中,可能并不会让你使用提交刷新页面式的上传图片,比如上传头像,按照常理,肯定是在相册选择照片之后,确认上传,而肯定不会通过form表单,点击submi ...

  6. python读文件完整代码_python文件读写代码实例

    实验室导师又有任务,从一个.dat文件中读取波形数据,通过一个自编码网络进行异常检测.可是对我这种小白来说真的艰难.从最基础的文件读写开始吧. 先说数据,是一个int16型的数组.说是数组,但是读取也 ...

  7. python新建文件夹代码_Python文件夹与文件的操作实现代码

    有关文件夹与文件的查找,删除等功能 在 os 模块中实现.使用时需先导入这个模块, 导入的方法是: import os 一.取得当前目录 s = os.getcwd() # s 中保存的是当前目录(即 ...

  8. C语言文件操作函数总结——超详细

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 文件与流 在C语言中有三种标准流: stdin(standard input stream)标 ...

  9. php文件缓存代码,php文件缓存实例代码

    php教程文件缓存实例代码 缓存在实际使用当中应用很广泛,可以减轻对服务器数据库教程的访问,提高运行速度.目前很多cms内容管理系统中频繁使用缓存机制来提高系统运行的效率 cache.php 代码如下 ...

最新文章

  1. 常用的认证机制之session认证和token认证
  2. mysql数据意外删了怎么办_MySQL数据库意外崩溃导致表数据文件损坏无法启动怎么办...
  3. CImage类显示图片
  4. java 垂直走马灯多行,Android实现图文垂直跑马灯效果
  5. centeros7安装mysql5.6_CentOS7安装MySQL5.6
  6. 支付宝双11狂欢幕后的女程序员:服务全球12亿人,每天和不法分子打攻防战
  7. redis内存淘汰和持久化_redis 持久化
  8. jsp import mysql con_jsp的分页查询的代码(mysql数据库)
  9. C/C++轻松写基于UDP的远程控制
  10. 销售订单无法使用折扣(其他可以正常使用)
  11. 单片机c语言 教案,《单片机C语言》 课程教案.doc
  12. Vasp 石墨烯能带计算
  13. Hyperledger/FireFly
  14. R语言遍历字符串再拼接复原
  15. mac文件夹怎么重命名?苹果电脑文件夹重命名快捷键
  16. 云南大学软件测试,云南大学《软件测试》软件测试期末报告.pdf
  17. Web前端零基础入门——HTML5
  18. 模运算——大整数取模、幂取模等
  19. 非常好的免费在线计算机词典
  20. 桥梁模式练习:飞机信息系统(JAVA练习项目IDEA)

热门文章

  1. 寻找新冠“解药”:在 10^60 化合物分子空间,他们用 AI 挖掘潜在药物
  2. 面试官:你说对 MySQL 事务很熟?那我问你 10 个问题
  3. 绝了!RNN 还会写藏头诗!
  4. “我们完全误解了区块链!”
  5. 敏捷与可靠:极米科技携手华为云,共同开启家庭娱乐新视界
  6. 我在 1969 年写代码
  7. @程序员,不容错过的 Vim 实用技巧请查收!
  8. 程序员,岂能被网站吞吐量难住?
  9. 为什么都敏捷开发了项目还会延期?!| 技术头条
  10. PDF 翻译神器,再也不担心读不懂英文 Paper 了 | 开发攻略