Ver Fonte

增加文件上传表单自定删除文件接口功能

jqh há 5 anos atrás
pai
commit
605ba5442d
2 ficheiros alterados com 65 adições e 0 exclusões
  1. 2 0
      src/Form/Field/WebUploader.php
  2. 63 0
      src/Traits/HasUploadedFile.php

+ 2 - 0
src/Form/Field/WebUploader.php

@@ -95,6 +95,8 @@ trait WebUploader
     {
         $this->options['server'] = admin_url($server);
 
+        $this->deleteUrl($server);
+
         return $this;
     }
 

+ 63 - 0
src/Traits/HasUploadedFile.php

@@ -3,6 +3,7 @@
 namespace Dcat\Admin\Traits;
 
 use Dcat\Admin\Admin;
+use Dcat\Admin\Form\Field\File;
 use Dcat\Admin\Support\WebUploader;
 use Illuminate\Filesystem\FilesystemAdapter;
 use Illuminate\Support\Facades\Storage;
@@ -46,6 +47,46 @@ trait HasUploadedFile
         return Storage::disk($disk ?: config('admin.upload.disk'));
     }
 
+    /**
+     * 判断是否是删除请求.
+     *
+     * @return bool
+     */
+    public function isDeleteRequest()
+    {
+        return request()->has(File::FILE_DELETE_FLAG);
+    }
+
+    /**
+     * 删除文件.
+     *
+     * @param \Illuminate\Contracts\Filesystem\Filesystem|FilesystemAdapter $disk
+     * @param string|null                                                   $path
+     *
+     * @return bool
+     */
+    public function deleteFile($disk = null, $path = null)
+    {
+        $disk = $disk ?: $this->disk();
+
+        return $disk->delete($path ?: request()->key);
+    }
+
+    /**
+     * 删除文件并响应返回值.
+     *
+     * @param \Illuminate\Contracts\Filesystem\Filesystem|FilesystemAdapter $disk
+     * @param string|null
+     *
+     * @return \Illuminate\Http\JsonResponse
+     */
+    public function deleteFileAndResponse($disk = null, $path = null)
+    {
+        $this->deleteFile($disk, $path);
+
+        return $this->responseDeleted();
+    }
+
     /**
      * 响应上传成功信息.
      *
@@ -90,4 +131,26 @@ trait HasUploadedFile
             'error' => ['code' => $code, 'message' => $error], 'status' => false,
         ]);
     }
+
+    /**
+     * 文件删除成功.
+     *
+     * @return \Illuminate\Http\JsonResponse
+     */
+    public function responseDeleted()
+    {
+        return response()->json(['status' => true]);
+    }
+
+    /**
+     * 文件删除失败.
+     *
+     * @param string $message
+     *
+     * @return \Illuminate\Http\JsonResponse
+     */
+    public function responseDeleteFail($message = '')
+    {
+        return response()->json(['status' => false, 'message' => $message]);
+    }
 }