欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php 上传图片的代码

程序员文章站 2022-06-05 17:03:03
...
  1. /*

  2. * 参数说明
  3. * $max_file_size : 上传文件大小限制, 单位BYTE
  4. * $destination_folder : 上传文件路径
  5. * $watermark : 是否附加水印(1为加水印,其他为不加水印);
  6. * http://bbs.it-home.org
  7. * 使用说明:
  8. * 1. 将PHP.INI文件里面的"extension=php_gd2.dll"一行前面的;号去掉,因为我们要用到GD库;
  9. * 2. 将extension_dir =改为你的php_gd2.dll所在目录;
  10. */
  11. // 上传文件类型列表
  12. $uptypes = array (
  13. 'image/jpg',
  14. 'image/png',
  15. 'image/jpeg',
  16. 'image/pjpeg',
  17. 'image/gif',
  18. 'image/bmp',
  19. 'image/x-png'
  20. );
  21. $max_file_size = 20000000; //上传文件大小限制,单位BYTE
  22. $destination_folder = 'uploadimg/'; //上传文件路径
  23. $watermark = 1; //是否附加水印(1为加水印,其他为不加水印);
  24. $watertype = 1; //水印类型(1为文字,2为图片)
  25. $waterposition = 1; //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中);
  26. $waterstring = "http://bbs.it-home.org/"; //水印字符串
  27. $waterimg = "xplore.gif"; //水印图片
  28. $imgpreview = 1; //是否生成预览图(1为生成,其他为不生成);
  29. $imgpreviewsize = 1 / 2; //缩略图比例
  30. ?>
  31. ZwelL图片上传程序
  32. if ($_SERVER['REQUEST_METHOD'] == 'POST') {

  33. //判断是否有上传文件
  34. if (is_uploaded_file($_FILES['upfile']['tmp_name'])) {

  35. $upfile = $_FILES['upfile'];
  36. print_r($_FILES['upfile']);
  37. $name = $upfilep['name']; //文件名
  38. $type = $upfile['type']; //文件类型
  39. $size = $upfile['size']; //文件大小
  40. $tmp_name = $upfile['tmp_name']; //临时文件
  41. $error = $upfile['error']; //出错原因
  42. if ($max_file_size echo '上传文件太大';

  43. exit ();
  44. }
  45. if (!in_arrar($type, $uptypes)) { //判断文件的类型

  46. echo '上传文件类型不符' . $type;
  47. exit ();
  48. }
  49. if (!file_exists($destination_folder)) {

  50. mkdir($destination_folder);
  51. }
  52. if (file_exists("upload/" . $_FILES["file"]["name"])) {

  53. echo $_FILES["file"]["name"] . " already exists. ";
  54. } else {
  55. move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
  56. echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
  57. }
  58. $pinfo = pathinfo($name);

  59. $ftype = $pinfo['extension'];
  60. $destination = $destination_folder . time() . "." . $ftype;
  61. if (file_exists($destination) && $overwrite != true) {
  62. echo "同名的文件已经存在了";
  63. exit ();
  64. }
  65. if (!move_uploaded_file($tmp_name, $destination)) {

  66. echo "移动文件出错";
  67. exit ();
  68. }
  69. $pinfo = pathinfo($destination);

  70. $fname = $pinfo[basename];
  71. echo " 已经成功上传
    文件名: " . $destination_folder . $fname . "
    ";
  72. echo " 宽度:" . $image_size[0];
  73. echo " 长度:" . $image_size[1];
  74. echo "
    大小:" . $file["size"] . " bytes";
  75. if ($watermark == 1) {

  76. $iinfo = getimagesize($destination, $iinfo);
  77. $nimage = imagecreatetruecolor($image_size[0], $image_size[1]);
  78. $white = imagecolorallocate($nimage, 255, 255, 255);
  79. $black = imagecolorallocate($nimage, 0, 0, 0);
  80. $red = imagecolorallocate($nimage, 255, 0, 0);
  81. imagefill($nimage, 0, 0, $white);
  82. switch ($iinfo[2]) {
  83. case 1 :
  84. $simage = imagecreatefromgif($destination);
  85. break;
  86. case 2 :
  87. $simage = imagecreatefromjpeg($destination);
  88. break;
  89. case 3 :
  90. $simage = imagecreatefrompng($destination);
  91. break;
  92. case 6 :
  93. $simage = imagecreatefromwbmp($destination);
  94. break;
  95. default :
  96. die("不支持的文件类型");
  97. exit;
  98. }
  99. imagecopy($nimage, $simage, 0, 0, 0, 0, $image_size[0], $image_size[1]);

  100. imagefilledrectangle($nimage, 1, $image_size[1] - 15, 80, $image_size[1], $white);
  101. switch ($watertype) {

  102. case 1 : //加水印字符串
  103. imagestring($nimage, 2, 3, $image_size[1] - 15, $waterstring, $black);

  104. break;
  105. case 2 : //加水印图片
  106. $simage1 = imagecreatefromgif("xplore.gif");

  107. imagecopy($nimage, $simage1, 0, 0, 0, 0, 85, 15);
  108. imagedestroy($simage1);
  109. break;
  110. }
  111. switch ($iinfo[2]) {

  112. case 1 :
  113. //imagegif($nimage, $destination);
  114. imagejpeg($nimage, $destination);

  115. break;
  116. case 2 :
  117. imagejpeg($nimage, $destination);
  118. break;
  119. case 3 :
  120. imagepng($nimage, $destination);
  121. break;
  122. case 6 :
  123. imagewbmp($nimage, $destination);
  124. //imagejpeg($nimage, $destination);
  125. break;
  126. }
  127. //覆盖原上传文件

  128. imagedestroy($nimage);
  129. imagedestroy($simage);
  130. }
  131. if ($imgpreview == 1) {

  132. echo "
    图片预览:
    ";
  133. echo "php 上传图片的代码";
  134. }
  135. }
  136. }
  137. ?>