HasUploadedFile.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <?php
  2. namespace Dcat\Admin\Traits;
  3. use Dcat\Admin\Admin;
  4. use Dcat\Admin\Form\Field\File;
  5. use Dcat\Admin\Support\WebUploader;
  6. use Illuminate\Filesystem\FilesystemAdapter;
  7. use Illuminate\Support\Facades\Storage;
  8. /**
  9. * 文件上传辅助功能.
  10. *
  11. * Trait HasUploadedFile
  12. */
  13. trait HasUploadedFile
  14. {
  15. /**
  16. * 获取文件上传管理.
  17. *
  18. * @return WebUploader
  19. */
  20. public function uploader()
  21. {
  22. return Admin::context()->webUploader;
  23. }
  24. /**
  25. * 获取上传文件.
  26. *
  27. * @return \Symfony\Component\HttpFoundation\File\UploadedFile|void
  28. */
  29. public function file()
  30. {
  31. return $this->uploader()->getCompleteUploadedFile();
  32. }
  33. /**
  34. * 获取文件管理仓库.
  35. *
  36. * @param string|null $disk
  37. *
  38. * @return \Illuminate\Contracts\Filesystem\Filesystem|FilesystemAdapter
  39. */
  40. public function disk(string $disk = null)
  41. {
  42. return Storage::disk($disk ?: config('admin.upload.disk'));
  43. }
  44. /**
  45. * 判断是否是删除请求.
  46. *
  47. * @return bool
  48. */
  49. public function isDeleteRequest()
  50. {
  51. return request()->has(File::FILE_DELETE_FLAG);
  52. }
  53. /**
  54. * 删除文件.
  55. *
  56. * @param \Illuminate\Contracts\Filesystem\Filesystem|FilesystemAdapter $disk
  57. * @param string|null $path
  58. *
  59. * @return bool
  60. */
  61. public function deleteFile($disk = null, $path = null)
  62. {
  63. $disk = $disk ?: $this->disk();
  64. return $disk->delete($path ?: request()->key);
  65. }
  66. /**
  67. * 删除文件并响应返回值.
  68. *
  69. * @param \Illuminate\Contracts\Filesystem\Filesystem|FilesystemAdapter $disk
  70. * @param string|null
  71. *
  72. * @return \Illuminate\Http\JsonResponse
  73. */
  74. public function deleteFileAndResponse($disk = null, $path = null)
  75. {
  76. $this->deleteFile($disk, $path);
  77. return $this->responseDeleted();
  78. }
  79. /**
  80. * 响应上传成功信息.
  81. *
  82. * @param string $path 文件完整路径
  83. * @param string $url
  84. * @return \Illuminate\Http\JsonResponse
  85. */
  86. public function responseUploaded(string $path, string $url)
  87. {
  88. return response()->json([
  89. 'status' => true,
  90. 'id' => $path,
  91. 'name' => basename($path),
  92. 'path' => basename($path),
  93. 'url' => $url,
  94. ]);
  95. }
  96. /**
  97. * 响应验证失败信息.
  98. *
  99. * @param mixed $message
  100. *
  101. * @return \Illuminate\Http\JsonResponse
  102. */
  103. public function responseValidationMessage($message)
  104. {
  105. return $this->responseErrorMessage($message, 103);
  106. }
  107. /**
  108. * 响应失败信息.
  109. *
  110. * @param $error
  111. * @param $code
  112. *
  113. * @return \Illuminate\Http\JsonResponse
  114. */
  115. public function responseErrorMessage($error, $code = 107)
  116. {
  117. return response()->json([
  118. 'error' => ['code' => $code, 'message' => $error], 'status' => false,
  119. ]);
  120. }
  121. /**
  122. * 文件删除成功.
  123. *
  124. * @return \Illuminate\Http\JsonResponse
  125. */
  126. public function responseDeleted()
  127. {
  128. return response()->json(['status' => true]);
  129. }
  130. /**
  131. * 文件删除失败.
  132. *
  133. * @param string $message
  134. *
  135. * @return \Illuminate\Http\JsonResponse
  136. */
  137. public function responseDeleteFail($message = '')
  138. {
  139. return response()->json(['status' => false, 'message' => $message]);
  140. }
  141. }