热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php上传文件并生成缩略图代码

php上传文件并生成缩略图代码if(isset($_FILES[upImg])){ if($userGroup[$loginArr[group]][up

php 上传文件并生成缩略图代码

if( isset($_FILES[upImg]) )
{
 if( $userGroup[$loginArr[group]][upload] == 0 )
 {
  echo {"error":"您所在的用户组无权上传图片!"};
 }
 else
 {
  $savePath = "attachment/img/".date(Y/m/d/H);

  mkDirs($savePath);

  $fileType = strtolower(strrchr($_FILES[upImg][name],"."));

  if ( !in_array($fileType, array(".jpg",".jpeg?s=quot;,".gif",".png")) )
  {
   echo {"error":"目前仅支持格式为jpg、jpeg、gif、png的图片!"};
  }
  elseif( $_FILES[upImg][size] > 204800 )
  {
   echo {"error":"图片不能超过200K!"};
  }
  else
  {
   $saveImg = $savePath."/".$loginArr[uid]."_".time().rand().$fileType;

   if( @move_uploaded_file($_FILES[upImg][tmp_name], $saveImg) )
   {
    echo {"error":"","msg":"php;
   }
   else
   {
    echo {"error":"图片上传失败!"};
   }
  }
 }
}

if( $loginArr[state] == 0 )
{
 echo {"error":"您还没有登录!"};
}
else
{
 $avatarPath = "attachment/avatar/".($loginArr[uid]%32)."/".($loginArr[uid]%257)."/".$loginArr[uid];

 if( isset($_FILES[upAvatar]) )
 {
  mkDirs($avatarPath);

  $fileType = strtolower(strrchr($_FILES[upAvatar][name],"."));

  if ( !in_array($fileType, array(".jpg",".jpeg?s=quot;,".gif",".png")) )
  {
   echo {"error":"目前仅支持格式为jpg、jpeg、gif、png的图片!"};
  }
  elseif( $_FILES[upAvatar][size] > 2097152 )
  {
   echo {"error":"图片不能超过2MB!"};
  }
  else
  {
   $imgInfo = @getimagesize($_FILES[upAvatar][tmp_name]);

   if( !$imgInfo || !in_array($imgInfo[2], array(1,2,3)) )
   {
    echo {"error":"系统无法识别您上传的文件!"};
   }
   else
   {
    $TmpAvatar = $avatarPath."/temp".$fileType;
    
    if( @move_uploaded_file($_FILES[upAvatar][tmp_name], $TmpAvatar) )
    {
     $maxWidth = 520;

     $maxHeight = 520;

     if( $maxWidth > $imgInfo[0] || $maxHeight > $imgInfo[1] )
     {
      $maxWidth = $imgInfo[0];

      $maxHeight = $imgInfo[1];
     }
     else
     {
      if ( $imgInfo[0] <$imgInfo[1] )
       $maxWidth = ($maxHeight / $imgInfo[1]) * $imgInfo[0];
      else
       $maxHeight = ($maxWidth / $imgInfo[0]) * $imgInfo[1];
     }

     if( $maxWidth <40 )
     {
      $maxWidth = 40;
     }

     if( $maxHeight <40 )
     {
      $maxHeight = 40;
     }

     $image_p = imagecreatetruecolor($maxWidth, $maxHeight);

     switch($imgInfo[2])
     {
      case 1:
       $image = imagecreatefromgif($TmpAvatar);
       break;
      case 2:
       $image = imagecreatefromjpeg($TmpAvatar);
       break;
      case 3:
       $image = imagecreatefrompng($TmpAvatar);
       break;
     }

     imagecopyresampled($image_p, $image, 0, 0, 0, 0, $maxWidth, $maxHeight, $imgInfo[0], $imgInfo[1]);

     imagejpeg($image_p, $avatarPath."/temp.jpg",100);

     imagedestroy($image_p);

     imagedestroy($image);

     if( $fileType != ".jpg" && file_exists($TmpAvatar) )
     {
      unlink($TmpAvatar);
     }

     echo {"error":"","url":".$avatarPath./temp.jpg?.rand().","width":".$maxWidth.","height":".$maxHeight."};
    }
    else
    {
     echo {"error":"图片上传失败!"};
    }
   }
  }
 }

 if( isset($_POST[x],$_POST[y],$_POST[w],$_POST[h]) )
 {
  if( is_numeric($_POST[x]) && is_numeric($_POST[y]) && $_POST[w] > 0 && $_POST[h] > 0 )
  {
   $image_p = imagecreatetruecolor(40, 40);

   $image = imagecreatefromjpeg($avatarPath."/temp.jpg");

   imagecopyresampled($image_p, $image, 0, 0, $_POST[x], $_POST[y], 40, 40, $_POST[w], $_POST[h]);

   imagejpeg($image_p, $avatarPath."/40_40.jpg",100);

   imagedestroy($image_p);

   imagedestroy($image);

   unlink($avatarPath."/temp.jpg");

   echo "1";
  }
 }

 if( isset($_POST[avatar]) && $_POST[avatar] == "delete" )
 {
  if( file_exists($avatarPath."/temp.jpg") )
  {
   unlink($avatarPath."/temp.jpg");
  }
 }
}

ob_end_flush();


教程网址:

欢迎收藏∩_∩但请保留本文链接。


推荐阅读
  • 解决FCKeditor应用主题后上传问题及优化配置
    本文介绍了在Freetextbox收费后选择FCKeditor作为替代方案时遇到的上传问题及其解决方案。通过调整配置文件和调试工具,最终解决了上传失败的问题,并对相关配置进行了优化。 ... [详细]
  • 本文介绍了如何使用PHP代码实现微信平台的媒体素材上传功能,详细解释了API接口的使用方法和注意事项,确保文件路径正确以避免常见的错误。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 帝国CMS多图上传插件详解及使用指南
    本文介绍了一款用于帝国CMS的多图上传插件,该插件通过Flash技术实现批量图片上传功能,显著提升了多图上传效率。文章详细说明了插件的安装、配置和使用方法。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • YB02 防水车载GPS追踪器
    YB02防水车载GPS追踪器由Yuebiz科技有限公司设计生产,适用于车辆防盗、车队管理和实时追踪等多种场合。 ... [详细]
  • getimagesize:取得图片的长宽。imagearc:画弧线。imagechar:写出横向字符。imagecharup:写出直式字符。imagecoloralloc ... [详细]
  • 本文探讨了如何在 PHP 的 Eloquent ORM 中实现数据表之间的关联查询,并通过具体示例详细解释了如何将关联数据嵌入到查询结果中。这不仅提高了数据查询的效率,还简化了代码逻辑。 ... [详细]
  • 使用 GitHub、JSDelivr、PicGo 和 Typora 构建高效的图床解决方案
    本文详细介绍了如何利用 GitHub 仓库、JSDelivr CDN、PicGo 图床工具和 Typora 编辑器,搭建一个高效且免费的图床系统。通过此方案,用户可以轻松管理和上传图片,并在 Markdown 文档中快速插入高质量的图片链接。 ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • Django Token 认证详解与 HTTP 401、403 状态码的区别
    本文详细介绍了如何在 Django 中配置和使用 Token 认证,并解释了 HTTP 401 和 HTTP 403 状态码的区别。通过具体的代码示例,帮助开发者理解认证机制及权限控制。 ... [详细]
  • 在Java应用程序开发过程中,FTP协议被广泛用于文件的上传和下载操作。本文通过Jakarta Commons Net库中的FTPClient类,详细介绍如何实现文件的上传和下载功能。 ... [详细]
  • PostgreSQL 10 离线安装指南
    本文详细介绍了如何在无法联网的服务器上进行 PostgreSQL 10 的离线安装,并涵盖了从下载安装包到配置远程访问的完整步骤。 ... [详细]
  • 京东云图片上传注册指南
    本文详细介绍了如何在京东云平台完成账号注册并实现图片上传功能,涵盖从注册到配置的完整流程。 ... [详细]
  • 创建项目:Visual Studio Online 入门指南
    本文介绍如何使用微软的 Visual Studio Online(VSO)创建和管理开发项目。作为一款基于云计算的开发平台,VSO 提供了丰富的工具和服务,简化了项目的配置和部署流程。 ... [详细]
author-avatar
秦乐0_707
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有