Request.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace app;
  3. // 应用请求对象类
  4. use think\File;
  5. use think\file\UploadedFile;
  6. class Request extends \think\Request
  7. {
  8. private bool $UploadFileTest = false;
  9. /**
  10. * @notes 设置本地上传文件信息
  11. * @param $files
  12. * @return void
  13. * @author lbzy
  14. * @datetime 2023-11-16 09:58:55
  15. */
  16. function setTempUploadLocalWithFiles($files): void
  17. {
  18. $this->UploadFileTest = true;
  19. $this->withFiles($files);
  20. }
  21. /**
  22. * @notes UploadedFile 新加了 $this->UploadFileTest选项 从而不执行is_upload_file()检查
  23. * @param array $files
  24. * @param string $name
  25. * @return array
  26. * @throws \think\Exception
  27. * @author lbzy
  28. * @datetime 2023-11-16 09:59:35
  29. */
  30. protected function dealUploadFile(array $files, string $name): array
  31. {
  32. $array = [];
  33. foreach ($files as $key => $file) {
  34. if (is_array($file['name'])) {
  35. $item = [];
  36. $keys = array_keys($file);
  37. $count = count($file['name']);
  38. for ($i = 0; $i < $count; $i++) {
  39. if ($file['error'][$i] > 0) {
  40. if ($name == $key) {
  41. $this->throwUploadFileError($file['error'][$i]);
  42. } else {
  43. continue;
  44. }
  45. }
  46. $temp['key'] = $key;
  47. foreach ($keys as $_key) {
  48. $temp[$_key] = $file[$_key][$i];
  49. }
  50. $item[] = new UploadedFile($temp['tmp_name'], $temp['name'], $temp['type'], $temp['error'], $this->UploadFileTest);
  51. }
  52. $array[$key] = $item;
  53. } else {
  54. if ($file instanceof File) {
  55. $array[$key] = $file;
  56. } else {
  57. if ($file['error'] > 0) {
  58. if ($key == $name) {
  59. $this->throwUploadFileError($file['error']);
  60. } else {
  61. continue;
  62. }
  63. }
  64. $array[$key] = new UploadedFile($file['tmp_name'], $file['name'], $file['type'], $file['error'], $this->UploadFileTest);
  65. }
  66. }
  67. }
  68. return $array;
  69. }
  70. }