UploadController.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. namespace frontend\modules\api\controllers;
  3. use frontend\modules\api\components\BaseAdminController;
  4. use yii\web\Response;
  5. class UploadController extends BaseAdminController
  6. {
  7. /**
  8. * 上传头像
  9. * @return Response
  10. */
  11. public function actionUserAvatar()
  12. {
  13. //******先存储图片,返回完整路径******//
  14. $day = date("Ymd"); //定义存储文件夹:20220101
  15. $dir = "../web/uploads/" . $day; //设定存储上传文件的文件夹
  16. if (!is_dir($dir)) {
  17. mkdir($dir, 0777, TRUE); //如果文件夹目录不存在则创建
  18. }
  19. $fileName = $_FILES["file"]["name"]; //得到上传文件的名字
  20. $oldPath = $dir . "/" . $fileName; // 路径+旧文件名
  21. $name = explode('.', $fileName); //将文件名以'.'分割得到后缀名,得到一个数组
  22. $num = count($name) - 1; //下标减1
  23. $fileName = strtolower($name[$num]); //转换成小写
  24. // 初步校验图片代码
  25. if (empty($fileName) || ($fileName !== 'jpeg' && $fileName !== 'jpg' && $fileName !== 'gif' && $fileName !== 'png')) {
  26. return $this->asJson([], 1, "图片格式不合法!"); //通知前端图片格式非法
  27. }
  28. if ($_FILES['file']['size'] > 2097152) {
  29. return $this->asJson([], 1, "图片大小{$_FILES['file']['size']}已超出2M限制!"); //通知前端图片大小非法
  30. }
  31. //生成文件名
  32. $date = date('Ymdhis') . rand(10000, 99999); // 得到当前时间,如;2017070516314829,附上5位随机数字
  33. $newName = $date . '.' . $name[1]; // 得到一个新的文件为'随机数字.jpg'
  34. $newPath = $dir . "/" . $newName; // 路径+新文件名
  35. $path = "/uploads/" . $day . "/" . $newName;
  36. //完成上传
  37. move_uploaded_file($_FILES['file']['tmp_name'], $oldPath); // 上传
  38. rename($oldPath, $newPath); // 重命名
  39. //返回数据
  40. $data = [
  41. "path" => $path,
  42. ];
  43. return $this->asJson($data);
  44. }
  45. /**
  46. * 头像上传
  47. * @return Response
  48. */
  49. public function actionCaseAvatar()
  50. {
  51. //******先存储图片,返回完整路径******//
  52. $day = date("Ymd"); //定义存储文件夹:20220101
  53. $dir = "../web/uploads/" . $day; //设定存储上传文件的文件夹
  54. if (!is_dir($dir)) {
  55. mkdir($dir, 0777, TRUE); //如果文件夹目录不存在则创建
  56. }
  57. $fileName = $_FILES["file"]["name"]; //得到上传文件的名字
  58. $oldPath = $dir . "/" . $fileName; // 路径+旧文件名
  59. $name = explode('.', $fileName); //将文件名以'.'分割得到后缀名,得到一个数组
  60. $num = count($name) - 1; //下标减1
  61. $fileName = strtolower($name[$num]); //转换成小写
  62. // 初步校验图片代码
  63. if (empty($fileName) || ($fileName !== 'jpeg' && $fileName !== 'jpg' && $fileName !== 'gif' && $fileName !== 'png')) {
  64. return $this->asJson([], 1, "图片格式不合法!"); //通知前端图片格式非法
  65. }
  66. if ($_FILES['file']['size'] > 2097152) {
  67. return $this->asJson([], 1, "图片大小{$_FILES['file']['size']}已超出2M限制!"); //通知前端图片大小非法
  68. }
  69. //生成文件名
  70. $date = date('Ymdhis') . rand(10000, 99999); // 得到当前时间,如;2017070516314829,附上5位随机数字
  71. $newName = $date . '.' . $name[1]; // 得到一个新的文件为'随机数字.jpg'
  72. $newPath = $dir . "/" . $newName; // 路径+新文件名
  73. $path = "/uploads/" . $day . "/" . $newName;
  74. //完成上传
  75. move_uploaded_file($_FILES['file']['tmp_name'], $oldPath); // 上传
  76. rename($oldPath, $newPath); // 重命名
  77. //返回数据
  78. $data = [
  79. "path" => $path,
  80. ];
  81. return $this->asJson($data);
  82. }
  83. }