Uploads.php 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. <?php
  2. /**
  3. * lemocms
  4. * ============================================================================
  5. * 版权所有 2018-2027 lemocms,并保留所有权利。
  6. * 网站地址: https://www.lemocms.com
  7. * ----------------------------------------------------------------------------
  8. * 采用最新Thinkphp6实现
  9. * ============================================================================
  10. * Author: yuege
  11. * Date: 2019/8/2
  12. */
  13. namespace app\admin\controller;
  14. use app\common\controller\Backend;
  15. use FFMpeg\FFMpeg;
  16. use think\facade\Config;
  17. use think\facade\Env;
  18. use think\facade\Request;
  19. use lemo\helper\DataHelper;
  20. class Uploads extends Backend{
  21. //上传验证规则
  22. protected $uploadValidate = [
  23. 'image' => 'filesize:102400|fileExt:jpg,png,gif,jpeg,rar,zip,avi,mp4,rmvb,3gp,flv,mp3,txt,doc,xls,ppt,pdf,xls,docx,xlsx,doc,wmv'
  24. ];
  25. protected $imageValidate = [
  26. 'image' => 'filesize:10240|fileExt:jpg,png,gif,jpeg,bmp,svg,wmv'
  27. ];
  28. protected $videoValidate = [
  29. 'file' => 'filesize:10240|avi,rmvb,3gp,flv,mp4,wmv'
  30. ];
  31. protected $voiceValidate = [
  32. 'file' => 'filesize:2048|mp3,wma,wav,amr,wmv'
  33. ];
  34. public function initialize()
  35. {
  36. $fileExt = getConfigByCode('upload_file_type');
  37. $filemax = getConfigByCode('upload_file_max')*1024;
  38. $this->uploadValidate = ['image'=>
  39. 'filesize'.$filemax.'|'.$fileExt,
  40. ];
  41. parent::initialize(); // TODO: Change the autogenerated stub
  42. }
  43. /**
  44. * 文件上传
  45. * @return false|string
  46. */
  47. public function Uploads(){
  48. // ini_set("upload_max_filesize","9M");//即允许上传文件大小的最大值
  49. // ini_set("post_max_size","9M");//指通过表单POST给PHP的所能接收的最大值
  50. // ini_set("memory_limit","9M");//;每个PHP页面所吃掉的最大内存
  51. // ini_set("max_execution_time","3600");//每个PHP页面运行的最大时间值(秒)
  52. // ini_set("max_input_time","3600");//每个PHP页面接收数据所需的最大时间(秒)
  53. //获取上传文件表单字段名
  54. $fileKey = array_keys(request()->file());
  55. for ($i = 0; $i < count($fileKey); $i++) {
  56. //获取表单上传文件
  57. $file = request()->file($fileKey[$i]);
  58. try {
  59. validate($this->uploadValidate)->check(DataHelper::objToArray($file));
  60. $savename = \think\facade\Filesystem::disk('public')->putFile('uploads', $file);
  61. $savename= str_replace('\\', "/", $savename);
  62. $path[] = '/storage/' . $savename;
  63. } catch (\think\exception\ValidateException $e) {
  64. $path = '';
  65. $error = $e->getMessage();
  66. }
  67. }
  68. if (!empty($path)) {
  69. $result['code'] = 1;
  70. //分辨是否截图上传,截图上传只能上传一个,非截图上传可以上传多个
  71. if (Request::param('responseType') == 'json') {
  72. $result["url"] = $path[0];
  73. } else {
  74. $result["url"] = $path;
  75. }
  76. $result['msg'] = lang('upload success');
  77. return $result;
  78. } else {
  79. //上传失败获取错误信息
  80. $result['url'] = '';
  81. $result['msg'] = $error;
  82. $result['code'] = 0;
  83. return $result;
  84. }
  85. }
  86. /**
  87. * 文件上传
  88. * @return false|string
  89. */
  90. public function imageUploads(){
  91. //获取上传文件表单字段名
  92. $fileKey = array_keys(request()->file());
  93. for ($i = 0; $i < count($fileKey); $i++) {
  94. //获取表单上传文件
  95. $file = request()->file($fileKey[$i]);
  96. try {
  97. validate($this->imageValidate)
  98. ->check(DataHelper::objToArray($file));
  99. $savename = \think\facade\Filesystem::disk('public')->putFile('uploads', $file);
  100. $savename= str_replace('\\', "/", $savename);
  101. $path[] = '/storage/' . $savename;
  102. } catch (\think\exception\ValidateException $e) {
  103. $path = '';
  104. $error = $e->getMessage();
  105. }
  106. }
  107. if (!empty($path)) {
  108. $result['code'] = 1;
  109. //分辨是否截图上传,截图上传只能上传一个,非截图上传可以上传多个
  110. if (Request::param('responseType') == 'json') {
  111. $result["url"] = $path[0];
  112. } else {
  113. $result["url"] = $path;
  114. }
  115. $result['msg'] =lang('upload success');
  116. return $result;
  117. } else {
  118. //上传失败获取错误信息
  119. $result['url'] = '';
  120. $result['msg'] = $error;
  121. $result['code'] = 0;
  122. return $result;
  123. }
  124. }
  125. public function text()
  126. {
  127. }
  128. /**
  129. * 文件上传
  130. * @return false|string
  131. */
  132. public function videoUploads(){
  133. // ini_set("upload_max_filesize","10M");//即允许上传文件大小的最大值
  134. // ini_set("post_max_size","10M");//指通过表单POST给PHP的所能接收的最大值
  135. // ini_set("memory_limit","10M");//;每个PHP页面所吃掉的最大内存
  136. // ini_set("max_execution_time","3600");//每个PHP页面运行的最大时间值(秒)
  137. // ini_set("max_input_time","3600");//每个PHP页面接收数据所需的最大时间(秒)
  138. //获取上传文件表单字段名
  139. $fileKey = array_keys(request()->file());
  140. for ($i = 0; $i < count($fileKey); $i++) {
  141. //获取表单上传文件
  142. $file = request()->file($fileKey[$i]);
  143. try {
  144. validate($this->videoValidate)
  145. ->check(DataHelper::objToArray($file));
  146. $savename = \think\facade\Filesystem::disk('public')->putFile('uploads', $file);
  147. $savename= str_replace('\\', "/", $savename);
  148. $path[] = '/storage/' . $savename;
  149. } catch (\think\exception\ValidateException $e) {
  150. $path = '';
  151. $error = $e->getMessage();
  152. }
  153. }
  154. if (!empty($path)) {
  155. $result['code'] = 1;
  156. //分辨是否截图上传,截图上传只能上传一个,非截图上传可以上传多个
  157. if (Request::param('responseType') == 'json') {
  158. $result["url"] = $path[0];
  159. } else {
  160. $result["url"] = $path;
  161. }
  162. $result['msg'] = lang('upload success');
  163. return $result;
  164. } else {
  165. //上传失败获取错误信息
  166. $result['url'] = '';
  167. $result['msg'] = $error;
  168. $result['code'] = 0;
  169. return $result;
  170. }
  171. }
  172. /**
  173. * 文件上传
  174. * @return false|string
  175. */
  176. public function vioceUploads(){
  177. //获取上传文件表单字段名
  178. $fileKey = array_keys(request()->file());
  179. for ($i = 0; $i < count($fileKey); $i++) {
  180. //获取表单上传文件
  181. $file = request()->file($fileKey[$i]);
  182. try {
  183. validate($this->voiceValidate)
  184. ->check(DataHelper::objToArray($file));
  185. $savename = \think\facade\Filesystem::disk('public')->putFile('uploads', $file);
  186. $savename= str_replace('\\', "/", $savename);
  187. $path[] = '/storage/' . $savename;
  188. } catch (\think\exception\ValidateException $e) {
  189. $path = '';
  190. $error = $e->getMessage();
  191. }
  192. }
  193. if (!empty($path)) {
  194. $result['code'] = 1;
  195. //分辨是否截图上传,截图上传只能上传一个,非截图上传可以上传多个
  196. if (Request::param('responseType') == 'json') {
  197. $result["url"] = $path[0];
  198. } else {
  199. $result["url"] = $path;
  200. }
  201. $result['msg'] = lang('upload success');
  202. return $result;
  203. } else {
  204. //上传失败获取错误信息
  205. $result['url'] = '';
  206. $result['msg'] = $error;
  207. $result['code'] = 0;
  208. return $result;
  209. }
  210. }
  211. }