热门标签 | 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();


教程网址:

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


推荐阅读
  • 本文详细介绍了一个既适用于PHP5也适用于PHP7的cURL文件上传解决方案。此示例源于项目需求,旨在通过cURL实现文件上传功能,并解决不同PHP版本间的兼容性问题。 ... [详细]
  • 前言叨逼叨iOS上传文件,可能有很多第三方的框架之类的,比如AFN或者Alamofire之类的框架,但是今天要谈论的是原生的API是如何进行文件上传。兵 ... [详细]
  • 本文将详细介绍Python中一个非常实用的HTTP客户端库——requests模块,它不仅易于使用,而且功能强大,非常适合用于开发网络应用或进行Web数据抓取。 ... [详细]
  • 这两天开发一个app遇到了上传文件的安全问题,在这里记录下来,弥补自己只有鱼的记忆的缺陷,也希望有人能够提供更好的思路去解决文件上传的安全问题.下面这个类是文件上传的公共方法,To ... [详细]
  • 在 Laravel 5.5 中尝试通过 AJAX 和 FormData 上传图片文件时遇到了问题,具体表现为后端无法正确接收文件。本文将详细探讨这一问题,并提供解决方案。 ... [详细]
  • 为了解决不同服务器间共享图片的需求,我们最初考虑建立一个FTP图片服务器。然而,考虑到项目是一个简单的CMS系统,为了简化流程,团队决定探索七牛云存储的解决方案。本文将详细介绍使用七牛云存储的过程和心得。 ... [详细]
  • 当unique验证运到图片上传时
    2019独角兽企业重金招聘Python工程师标准model:public$imageFile;publicfunctionrules(){return[[[na ... [详细]
  • 本文深入探讨了JavaScript中实现继承的四种常见方法,包括原型链继承、构造函数继承、组合继承和寄生组合继承。对于正在学习或从事Web前端开发的技术人员来说,理解这些继承模式对于提高代码质量和维护性至关重要。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 本文详细列举了软件开发中常见的功能测试要点,涵盖输入框、搜索、添加/修改、删除、文件上传下载等多个方面,旨在帮助测试人员全面覆盖测试需求,确保软件质量。 ... [详细]
  • 微信小程序实现拍照与图片上传功能
    本文介绍如何在微信小程序中实现用户通过拍照或从相册选择图片,并将图片上传至服务器的功能,包括调用相关API和处理上传响应。 ... [详细]
  • 2023年PHP实现1GB视频上传的最佳实践
    本文将详细介绍如何使用PHP处理1GB大小的视频上传问题,包括文件类型验证、上传大小限制设置及优化上传过程,确保高效稳定地完成大文件上传。 ... [详细]
  • 自定义文件上传按钮的实现方法
    HTML 提供了 `type=file` 的 input 元素用于文件上传功能,但其默认样式较为简陋。本文探讨了如何利用原生 JavaScript 结合 layui 和 bootstrap 的样式来美化文件上传按钮,提升用户体验。 ... [详细]
  • 本文汇集了使用C#中不同HTTP客户端向Web API上传文件的实例,旨在为开发者提供实用的技术指南。 ... [详细]
  • 本文详细介绍了在使用 SmartUpload 组件进行文件上传时,如何正确配置和查找文件保存路径。通过具体的代码示例和步骤说明,帮助开发者快速解决上传路径配置的问题。 ... [详细]
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社区 版权所有