国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

181 lines
6.1KB

  1. <?php
  2. /**
  3. * swfupload上传
  4. *
  5. * @version $id:swfupload.php 16:22 2010年7月20日 tianya $
  6. * @package DedeBIZ.Administrator
  7. * @copyright Copyright (c) 2022 DedeBIZ.COM
  8. * @license GNU GPL v2 (https://www.dedebiz.com/license)
  9. * @link https://www.dedebiz.com
  10. */
  11. require_once(dirname(__FILE__).'/config.php');
  12. require_once(DEDEINC.'/image.func.php');
  13. //上传
  14. if (empty($dopost)) {
  15. ini_set('html_errors', '0');
  16. if (empty($Filedata) || !is_uploaded_file($Filedata)) {
  17. echo 'ERROR: Upload Error! ';
  18. exit(0);
  19. }
  20. //把文件移动到临时目录
  21. $tmpdir = DEDEDATA.'/uploadtmp';
  22. if (!is_dir($tmpdir)) {
  23. MkdirAll($tmpdir, $cfg_dir_purview);
  24. if (!is_dir($tmpdir)) {
  25. echo "ERROR: Create {$tmpdir} dir Error! ";
  26. exit(0);
  27. }
  28. }
  29. $FiledataNew = str_replace("\\", '/', $Filedata);
  30. $FiledataNew = $tmpdir.'/'.preg_replace("/(.*)[\/]/isU", "", $FiledataNew);
  31. $mime = get_mime_type($Filedata);
  32. if (preg_match("#^unknow#", $mime)) {
  33. echo "ERROR: Create {$tmpdir} dir Error! ";
  34. exit;
  35. }
  36. if (!preg_match("#^(image|video|audio|application)#i", $mime)) {
  37. echo "ERROR: Create {$tmpdir} dir Error! ";
  38. exit;
  39. }
  40. move_uploaded_file($Filedata, $FiledataNew);
  41. $info = $ftype = $sname = '';
  42. $srcInfo = GetImageSize($FiledataNew, $info);
  43. //检测文件类型
  44. if (!is_array($srcInfo)) {
  45. @unlink($Filedata);
  46. echo "ERROR: Image info Error! ";
  47. exit(0);
  48. } else {
  49. switch ($srcInfo[2]) {
  50. case 1:
  51. $ftype = 'image/gif';
  52. $sname = '.gif';
  53. break;
  54. case 2:
  55. $ftype = 'image/jpeg';
  56. $sname = '.jpg';
  57. break;
  58. case 3:
  59. $ftype = 'image/png';
  60. $sname = '.png';
  61. break;
  62. case 6:
  63. $ftype = 'image/bmp';
  64. $sname = '.bmp';
  65. break;
  66. }
  67. }
  68. if ($ftype == '') {
  69. @unlink($Filedata);
  70. echo "ERROR: Image type Error! ";
  71. exit(0);
  72. }
  73. //保存原图
  74. $filedir = $cfg_image_dir.'/'.MyDate($cfg_addon_savetype, time());
  75. if (!is_dir(DEDEROOT.$filedir)) {
  76. MkdirAll($cfg_basedir.$filedir, $cfg_dir_purview);
  77. }
  78. $filename = $cuserLogin->getUserID().'-'.dd2char(MyDate('ymdHis', time()));
  79. if (file_exists($cfg_basedir.$filedir.'/'.$filename.$sname)) {
  80. for ($i = 50; $i <= 5000; $i++) {
  81. if (!file_exists($cfg_basedir.$filedir.'/'.$filename.'-'.$i.$sname)) {
  82. $filename = $filename.'-'.$i;
  83. break;
  84. }
  85. }
  86. }
  87. $fileurl = $filedir.'/'.$filename.$sname;
  88. $rs = copy($FiledataNew, $cfg_basedir.$fileurl);
  89. unlink($FiledataNew);
  90. if (!$rs) {
  91. echo "ERROR: Copy Uploadfile Error! ";
  92. exit(0);
  93. }
  94. //WaterImg($cfg_basedir.$fileurl, 'up');
  95. $title = $filename.$sname;
  96. $inquery = "INSERT INTO `#@__uploads` (title,url,mediatype,width,height,playtime,filesize,uptime,mid)
  97. VALUES ('$title','$fileurl','$ftype','0','0','0','".filesize($cfg_basedir.$fileurl)."','".time()."','".$cuserLogin->getUserID()."'); ";
  98. if (!empty($arcid)) {
  99. $inquery = "INSERT INTO `#@__uploads` (arcid,title,url,mediatype,width,height,playtime,filesize,uptime,mid)
  100. VALUES ('$arcid','$title','$fileurl','$ftype','0','0','0','".filesize($cfg_basedir.$fileurl)."','".time()."','".$cuserLogin->getUserID()."'); ";
  101. }
  102. $dsql->ExecuteNoneQuery($inquery);
  103. $fid = $dsql->GetLastID();
  104. AddMyAddon($fid, $fileurl);
  105. //生成缩略图
  106. ob_start();
  107. ImageResizeNew($cfg_basedir.$fileurl, $cfg_ddimg_width, $cfg_ddimg_height, '', false);
  108. $imagevariable = ob_get_contents();
  109. ob_end_clean();
  110. //保存信息到 session
  111. if (!isset($_SESSION['file_info'])) $_SESSION['file_info'] = array();
  112. if (!isset($_SESSION['bigfile_info'])) $_SESSION['bigfile_info'] = array();
  113. if (!isset($_SESSION['fileid'])) $_SESSION['fileid'] = 1;
  114. else $_SESSION['fileid']++;
  115. $_SESSION['bigfile_info'][$_SESSION['fileid']] = $fileurl;
  116. $_SESSION['file_info'][$_SESSION['fileid']] = $imagevariable;
  117. echo "FILEID:".$_SESSION['fileid'];
  118. exit(0);
  119. }
  120. //生成缩图
  121. else if ($dopost == 'thumbnail') {
  122. if (empty($id)) {
  123. header('HTTP/1.1 500 Internal Server Error');
  124. echo 'No ID';
  125. exit(0);
  126. }
  127. if (!is_array($_SESSION['file_info']) || !isset($_SESSION['file_info'][$id])) {
  128. header('HTTP/1.1 404 Not found');
  129. exit(0);
  130. }
  131. header('Content-type: image/jpeg');
  132. header('Content-Length: '.strlen($_SESSION['file_info'][$id]));
  133. echo $_SESSION['file_info'][$id];
  134. exit(0);
  135. }
  136. //删除指定id的图片
  137. else if ($dopost == 'del') {
  138. if (!isset($_SESSION['bigfile_info'][$id])) {
  139. echo '';
  140. exit();
  141. }
  142. $dsql->ExecuteNoneQuery("DELETE FROM `#@__uploads` WHERE url LIKE '{$_SESSION['bigfile_info'][$id]}';");
  143. @unlink($cfg_basedir.$_SESSION['bigfile_info'][$id]);
  144. $_SESSION['file_info'][$id] = '';
  145. $_SESSION['bigfile_info'][$id] = '';
  146. echo "已删除";
  147. exit();
  148. }
  149. //获取图片地址
  150. else if ($dopost == 'addtoedit') {
  151. if (!isset($_SESSION['bigfile_info'][$id])) {
  152. echo '';
  153. exit();
  154. }
  155. echo $_SESSION['bigfile_info'][$id];
  156. exit();
  157. }
  158. //获取本地图片的缩略预览图
  159. else if ($dopost == 'ddimg') {
  160. //生成缩略图
  161. ob_start();
  162. if (!preg_match("/^(http[s]?:\/\/)?([^\/]+)/i", $img)) $img = $cfg_basedir.$img;
  163. ImageResizeNew($img, $cfg_ddimg_width, $cfg_ddimg_height, '', false);
  164. $imagevariable = ob_get_contents();
  165. ob_end_clean();
  166. header('Content-type: image/jpeg');
  167. header('Content-Length: '.strlen($imagevariable));
  168. echo $imagevariable;
  169. exit();
  170. }
  171. //删除指定的图片修改图片时用
  172. else if ($dopost == 'delold') {
  173. $imgfile = $cfg_basedir.$picfile;
  174. if (!file_exists($imgfile) && !is_dir($imgfile) && preg_match("#^".$cfg_medias_dir."#", $imgfile)) {
  175. @unlink($imgfile);
  176. }
  177. $dsql->ExecuteNoneQuery("DELETE FROM `#@__uploads` WHERE url LIKE '{$picfile}';");
  178. echo "已删除";
  179. exit();
  180. }
  181. ?>