file.ctrl.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <?php
  2. /**
  3. * [WeEngine System] Copyright (c) 2014 WE7.CC
  4. * WeEngine is NOT a free software, it under the license terms, visited http://www.we7.cc/ for more details.
  5. */
  6. defined('IN_IA') or exit('Access Denied');
  7. $do = in_array($_GPC['do'], array('upload', 'delete')) ? $_GPC['do'] : 'upload';
  8. $type = in_array($_GPC['type'], array('image','audio')) ? $_GPC['type'] : 'image';
  9. $result = array('error' => 1, 'message' => '');
  10. if ($do == 'delete') {
  11. if ($type = 'image') {
  12. $id = intval($_GPC['id']);
  13. if (!empty($id)) {
  14. $attachment = pdo_get('core_attachment', array('id' => $id), array('attachment', 'uniacid', 'uid'));
  15. if (!empty($attachment)) {
  16. if ($attachment['uniacid'] != $_W['uniacid'] || empty($_W['openid']) || (!empty($_W['fans']) && $attachment['uid'] != $_W['fans']['from_user']) || (!empty($_W['member']) && $attachment['uid'] != $_W['member']['uid'])) {
  17. return message(error(1, '无权删除!'), '', 'ajax');
  18. }
  19. load()->func('file');
  20. if ($_W['setting']['remote']['type']) {
  21. $result = file_remote_delete($attachment['attachment']);
  22. } else {
  23. $result = file_delete($attachment['attachment']);
  24. }
  25. if (!is_error($result)) {
  26. pdo_delete('core_attachment', array('id' => $id));
  27. }
  28. if (!is_error($result)) {
  29. return message(error('0'), '', 'ajax');
  30. } else {
  31. return message(error(1, $result['message']), '', 'ajax');
  32. }
  33. } else {
  34. return message(error(1, '图片不存在或已删除!'), '', 'ajax');
  35. }
  36. }
  37. return message($result, '', 'ajax');
  38. }
  39. }
  40. if ($do == 'upload') {
  41. if($type == 'image'){
  42. $setting = $_W['setting']['upload'][$type];
  43. $result = array(
  44. 'jsonrpc' => '2.0',
  45. 'id' => 'id',
  46. 'error' => array('code' => 1, 'message'=>''),
  47. );
  48. load()->func('file');
  49. if (empty($_FILES['file']['tmp_name'])) {
  50. $binaryfile = file_get_contents('php://input', 'r');
  51. if (!empty($binaryfile)) {
  52. mkdirs(ATTACHMENT_ROOT . '/temp');
  53. $tempfilename = random(5);
  54. $tempfile = ATTACHMENT_ROOT . '/temp/' . $tempfilename;
  55. if (file_put_contents($tempfile, $binaryfile)) {
  56. $imagesize = @getimagesize($tempfile);
  57. $imagesize = explode('/', $imagesize['mime']);
  58. $_FILES['file'] = array(
  59. 'name' => $tempfilename . '.' . $imagesize[1],
  60. 'tmp_name' => $tempfile,
  61. 'error' => 0,
  62. );
  63. }
  64. }
  65. }
  66. if (!empty($_FILES['file']['name'])) {
  67. if ($_FILES['file']['error'] != 0) {
  68. $result['error']['message'] = '上传失败,请重试!';
  69. die(json_encode($result));
  70. }
  71. if (!file_is_image($_FILES['file']['name'])) {
  72. $result['message'] = '上传失败, 请重试.';
  73. die(json_encode($result));
  74. }
  75. $ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
  76. $ext = strtolower($ext);
  77. $file = file_upload($_FILES['file']);
  78. if (is_error($file)) {
  79. $result['error']['message'] = $file['message'];
  80. die(json_encode($result));
  81. }
  82. $pathname = $file['path'];
  83. $fullname = ATTACHMENT_ROOT . '/' . $pathname;
  84. $thumb = empty($setting['thumb']) ? 0 : 1; $width = intval($setting['width']); if ($thumb == 1 && $width > 0 && (!isset($_GPC['thumb']) || (isset($_GPC['thumb']) && !empty($_GPC['thumb'])))) {
  85. $thumbnail = file_image_thumb($fullname, '', $width);
  86. @unlink($fullname);
  87. if (is_error($thumbnail)) {
  88. $result['message'] = $thumbnail['message'];
  89. die(json_encode($result));
  90. } else {
  91. $filename = pathinfo($thumbnail, PATHINFO_BASENAME);
  92. $pathname = $thumbnail;
  93. $fullname = ATTACHMENT_ROOT .'/'.$pathname;
  94. }
  95. }
  96. $info = array(
  97. 'name' => $_FILES['file']['name'],
  98. 'ext' => $ext,
  99. 'filename' => $pathname,
  100. 'attachment' => $pathname,
  101. 'url' => tomedia($pathname),
  102. 'is_image' => 1,
  103. 'filesize' => filesize($fullname),
  104. );
  105. $size = getimagesize($fullname);
  106. $info['width'] = $size[0];
  107. $info['height'] = $size[1];
  108. setting_load('remote');
  109. if (!empty($_W['setting']['remote']['type'])) {
  110. $remotestatus = file_remote_upload($pathname);
  111. if (is_error($remotestatus)) {
  112. $result['message'] = '远程附件上传失败,请检查配置并重新上传';
  113. file_delete($pathname);
  114. die(json_encode($result));
  115. } else {
  116. file_delete($pathname);
  117. $info['url'] = tomedia($pathname);
  118. }
  119. }
  120. pdo_insert('core_attachment', array(
  121. 'uniacid' => $uniacid,
  122. 'uid' => $_W['uid'],
  123. 'filename' => $_FILES['file']['name'],
  124. 'attachment' => $pathname,
  125. 'type' => $type == 'image' ? 1 : 2,
  126. 'createtime' => TIMESTAMP,
  127. ));
  128. $info['id'] = pdo_insertid();
  129. die(json_encode($info));
  130. } else {
  131. $result['error']['message'] = '请选择要上传的图片!';
  132. die(json_encode($result));
  133. }
  134. }
  135. }