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",".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":"http://'.$site_domain.$site_catalog.$saveImg.'"}';
   }
   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",".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();

时间: 2024-09-26 13:50:57

php 上传文件并生成缩略图代码的相关文章

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

<?php         代码如下 复制代码 if ($_GET['action'] == 'save') {                   $up = new upload();            $up->set_dir(dirname(__FILE__).'/upload/','{y}/{m}');            $up->set_thumb(100,80);            $up->set_watermark(dirname(__FILE__).

jsp上传文件之后,针对上传文件自动生成超链接供下载,具体代码。谢谢。

问题描述 jsp上传文件之后,针对上传文件自动生成超链接供下载,具体代码.谢谢. jsp上传文件之后,针对上传文件自动生成超链接供下载,整个过程的具体代码.谢谢. 解决方案 这个代码很长,你自己做到哪一步了.上传文件后会返回一个地址,使用servlet访问路径和那个地址拼接出url放在a标签的href就行了 解决方案二: http://www.cnblogs.com/xdp-gacl/p/4200090.html 解决方案三: JSP上传文件代码

webconfig限制了大小,控件上传文件,不执行代码就直接报错!如何解决

问题描述 -------web.config----<httpRuntimeexecutionTimeout="3600"maxRequestLength="1000"useFullyQualifiedRedirectUrl="true"/>-----------code----------------------------------------#region上传文件功能,包括文件上传及数据库信息同步更新privatevoidIm

ASP.NET MVC:HTML 5+MVC上传文件显示进度的代码

<head> <title>Index</title> <style type="text/css"> #statusBorder { position:relative; height:5px; width:100px; border:solid 1px gray; display:none; } #statusFill{ position:absolute; top:0; left:0; width:0px; background-c

使用Java代码如何上传文件到Stuts Action中??

问题描述 使用Java代码如何上传文件到Stuts Action中??求大神..... 问题补充:这里不是使用浏览器上传文件,而是使用Java代码上传... 解决方案 刚好写过直接上代码了调用的地方的代码URL url = new URL(imageHttp); BufferedImage img = ImageIO.read(url); File file = new File(System.currentTimeMillis()+".jpg"); ImageIO.write(img

PHP上传文件代码之入门代码

这是一种非常简单文件上传方式.基于安全方面的考虑,您应当增加有关什么用户有权上传文件的限制.  代码如下 复制代码 <!DOCTYPE html>       <html>       <head>       <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />       <meta http-equiv="Co

PHP+Ajax实现文件无刷新上传文件代码

PHP + jQuery Ajax文件上传实例.因为看到一些朋友询问如何实现PHP环境下的网页上传功能,自己这几天刚用了jQuery_upload_multiple上传插件,所以在这里把用法给大家说一下. 要实现基于这个插件的上传功能,其实挺简单,需要jquery就行了,另外还有一个上传文件时的PHP程序,费话不多说,先看下面的HTML,也就是带有上传表单,让用户选择上传文件的页面:    代码如下 复制代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML

如何使用JS获取IE上传文件路径(IE7,8)

本篇文章是对使用JS获取IE上传文件路径的实现代码进行了详细的分析介绍,需要的朋友参考下   复制代码 代码如下: function validateFileSize(id, maxsize) {             var btnsave = document.getElementById("Button2");             btnsave.disabled = false;             var filepath = "";      

Android通过HTTP协议实现上传文件数据_Android

本文实例为大家分享了Android通过HTTP协议实现上传文件数据的具体代码,供大家参考,具体内容如下 SocketHttpRequester.java package cn.itcast.utils; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.InputStream; import java.io.Inp