Fileoper.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: sicilon_IT
  5. * Date: 2020/1/5
  6. * Time: 9:49
  7. */
  8. namespace app\index\controller;
  9. use app\common\server\cosserver;
  10. use think\Controller;
  11. use think\facade\Log;
  12. use think\Request;
  13. class Fileoper extends Controller
  14. {
  15. private function filterfiletype($usefile = "file")
  16. {
  17. $filetype = $_FILES[$usefile]['type'];
  18. $types = [
  19. 'image',
  20. 'excel',
  21. ];
  22. $filetypeuse = "*" . $filetype;
  23. $iscanupload = false;
  24. foreach ($types as $key => $value) {
  25. if (strpos($filetypeuse, $value)) {
  26. $iscanupload = true;
  27. }
  28. }
  29. if (!$iscanupload) {
  30. log::info($_FILES);
  31. $msg = "file type error: " . $filetype;
  32. log::info($msg);
  33. $this->error($msg);
  34. }
  35. }
  36. /**
  37. * 指定文件位置上传
  38. *
  39. * @return void
  40. */
  41. public function uploadfilebydir()
  42. {
  43. Log::info($_FILES);
  44. $this->filterfiletype();
  45. // 获取表单上传文件
  46. $file = request()->file('file');
  47. if (empty($file)) {
  48. $this->error('请选择上传文件');
  49. }
  50. $dir = request()->param('dir', 'appointment');
  51. if (!preg_match("/^[a-z]{5,30}$/", $dir)) {
  52. $this->error('请求错误');
  53. }
  54. $dir = 'Uploads' . '/' . $dir;
  55. $domainpath = getselfurl() . '/' . $dir . '/';
  56. // 移动到框架应用根目录/public/uploads/ 目录下
  57. $info = $file->move(ROOT_PATH . 'public' . '/' . $dir);
  58. //如果不清楚文件上传的具体键名,可以直接打印$info来查看
  59. //获取文件(文件名),$info->getFilename() ***********不同之处,笔记笔记哦
  60. //获取文件(日期/文件名),$info->getSaveName() **********不同之处,笔记笔记哦
  61. $filename = $info->getSaveName(); //在测试的时候也可以直接打印文件名称来查看
  62. $filename = str_replace(DS, "/", $filename);
  63. if ($filename) {
  64. //$this->success('文件上传成功!');
  65. $imageUrl = $domainpath . $filename;
  66. $r_upload['code'] = '200';
  67. $r_upload['resultData'] = $imageUrl;
  68. //不转义反斜杠
  69. return json_encode($r_upload, 320);
  70. } else {
  71. // 上传失败获取错误信息
  72. $this->error($file->getError());
  73. }
  74. }
  75. public function upQuestionsWrite()
  76. {
  77. log::info($_FILES);
  78. $this->filterfiletype();
  79. // 获取表单上传文件
  80. $file = request()->file('file');
  81. $domainpath = 'https://' . $_SERVER['HTTP_HOST'] . '/Uploads/';
  82. if (empty($file)) {
  83. $this->error('请选择上传文件');
  84. }
  85. // 移动到框架应用根目录/public/uploads/ 目录下
  86. $info = $file->move(ROOT_PATH . 'public' . DS . 'Uploads');
  87. //如果不清楚文件上传的具体键名,可以直接打印$info来查看
  88. //获取文件(文件名),$info->getFilename() ***********不同之处,笔记笔记哦
  89. //获取文件(日期/文件名),$info->getSaveName() **********不同之处,笔记笔记哦
  90. $filename = $info->getSaveName(); //在测试的时候也可以直接打印文件名称来查看
  91. if ($filename) {
  92. //$this->success('文件上传成功!');
  93. $imageUrl = $domainpath . $filename;
  94. $r_upload['code'] = '200';
  95. $r_upload['resultData'] = $imageUrl;
  96. //不转义反斜杠
  97. return json_encode($r_upload, 320);
  98. } else {
  99. // 上传失败获取错误信息
  100. $this->error($file->getError());
  101. }
  102. }
  103. /**
  104. * 保存图片到cos上
  105. *
  106. * @return void
  107. * @author wj
  108. * @date 2022-08-05
  109. */
  110. public function savephoto()
  111. {
  112. Log::info($_FILES);
  113. $file = request()->file('file');
  114. // 移动到框架应用根目录/uploads/ 目录下
  115. $info = $file->move('Uploads/cosfile');
  116. if (!$info) {
  117. return backjson2(0, $file->getError());
  118. }
  119. $path = $info->getPathName();
  120. $filename = $info->getFilename();
  121. $houzhui = explode('.', $filename);
  122. $ext = end($houzhui);
  123. $allowtype = ['png', 'jpg', 'jpeg'];
  124. if (!in_array($ext, $allowtype)) {
  125. return backjson2(0, "格式错误");
  126. }
  127. $dir = "signimg/" . date('Ymd') . "/";
  128. $filename = uniqid() . '.' . $ext;
  129. //use ntyu-1313172967
  130. //$bucket = "backup-1306866048";
  131. $bucket = "ntyu-1313172967";
  132. $s_cos = new cosserver();
  133. $result = $s_cos->uploadfiles($path, $dir, $filename, $bucket);
  134. if (1 != $result['status']) {
  135. return backjson2(0, $result['msg']);
  136. }
  137. unlink($path);
  138. return backjson2(1, "操作成功", $result['data']);
  139. }
  140. }