UploadApi.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. namespace app\common\api;
  3. use app\common\validate\Upload;
  4. /**
  5. * Description of UploadApi
  6. *
  7. * @author sgq
  8. */
  9. class UploadApi {
  10. protected $fileSize = 5 * 1024 * 1024;
  11. protected $fileExt = "jpg,png,gif,pdf,xls,xlsx";
  12. protected $fileMime = "image/jpg,image/png,image/gif,application/pdf,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
  13. public function __construct($config = []) {
  14. $this->fileSize = isset($config["maxSize"]) ? $config["maxSize"] : $this->fileSize;
  15. $this->fileExt = isset($config["fileExt"]) ? $config["fileExt"] : $this->fileExt;
  16. $this->fileMime = isset($config["fileMime"]) ? $config["fileMime"] : $this->fileMime;
  17. }
  18. /**
  19. * 批量上传文件
  20. * @param type $files
  21. * @return type
  22. */
  23. public function uploadList($files, $path = "uploadfiles") {
  24. try {
  25. validate(['image' => ["sileSize" => $this->fileSize, "fileExt" => $this->fileExt, "fileMime" => $this->fileMime]])
  26. ->check($files);
  27. $savename = [];
  28. foreach ($files as $file) {
  29. $savename[] = \think\facade\Filesystem::disk("public")->putFile($path, $file);
  30. }
  31. return $savename;
  32. } catch (\think\exception\ValidateException $e) {
  33. echo $e->getMessage();
  34. }
  35. }
  36. /**
  37. * 单个文件上传
  38. * @param type $file
  39. * @param type $type 图片 => image 文件 => file 其他 => hybrid
  40. * @return type
  41. */
  42. public function uploadOne($file, $type, $path = "uploadfiles") {
  43. $upload_result = new \StdClass();
  44. try {
  45. switch ($type){
  46. case 'image':
  47. $check = ['image' => $file];
  48. break;
  49. case 'file':
  50. $check = ['file' => $file];
  51. break;
  52. case 'hybrid':
  53. $check = ['hybrid' => $file];
  54. break;
  55. case 'system':
  56. $check = ['system' => $file];
  57. break;
  58. default:
  59. $upload_result->code = 500;
  60. $upload_result->msg = "不支持的上传类型";
  61. return $upload_result;
  62. }
  63. validate(Upload::class)->check($check);
  64. $savename = \think\facade\Filesystem::disk("public")->putFile($path, $file);
  65. $upload_result->code = 200;
  66. $upload_result->filepath = $savename;
  67. return $upload_result;
  68. } catch (\think\exception\ValidateException $e) {
  69. $upload_result->code = 500;
  70. $upload_result->msg = $e->getMessage();
  71. return $upload_result;
  72. }
  73. }
  74. }