Explorar o código

差刪除檔案 吧

manto07m %!s(int64=2) %!d(string=hai) anos
pai
achega
610a05e813

+ 27 - 14
app/Http/Controllers/MessageController.php

@@ -9,6 +9,8 @@ use App\Http\Requests\StoreMessageCommentRequest;
 use App\Http\Requests\UpdatemessageRequest;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\File;
+use Illuminate\Support\Facades\Storage;
 
 class MessageController extends Controller
 {
@@ -41,7 +43,7 @@ class MessageController extends Controller
      * @param  \App\Http\Requests\StoremessageRequest  $request
      * @return \Illuminate\Http\Response
      */
-    public function store(StoremessageRequest $request)
+    public function store(Request $request)
     {
         //
         $preview = "";
@@ -51,18 +53,15 @@ class MessageController extends Controller
             $preview = strip_tags($preview);
             $preview = mb_substr($preview, 0, 55) . "...";
         }
-        $imageName = time() . '.' . $request->thumbnail->extension();
-
-        // Public Folder
-        $request->thumbnail->move(public_path('images'), $imageName);
-
+        $path = $request->file('thumbnail')->store('public');
+        $url = Storage::url($path);
         $message_comment = Message::create([
             'title' => $request->title,
             'content' => $request->content,
             'author_id' => $request->User()->id,
             'preview' => $preview,
             'tag' => $request->tag,
-            'thumbnail' => $imageName,
+            'thumbnail' => $url,
             'created_at' => now(),
         ]);
         return $message_comment;
@@ -134,10 +133,12 @@ class MessageController extends Controller
             $preview = mb_substr($preview, 0, 55) . "...";
         }
         if (is_string($request->thumbnail)) {
-            $imageName = $request->thumbnail;
+            $url = $request->thumbnail;
         } else {
-            $imageName = time() . '.' . $request->thumbnail->extension();
-            $request->thumbnail->move(public_path('images'), $imageName);
+            $thumbnail = Message::where('id', $request->id)->get()[0]->thumbnail;
+            $path = $request->file('thumbnail')->store('public');
+            $url = Storage::url($path);
+            File::delete($thumbnail);
         }
 
         $message = Message::where('id', $request->id)
@@ -147,7 +148,7 @@ class MessageController extends Controller
                 'content' => $request->content,
                 'preview' => $preview,
                 'tag' => $request->tag,
-                'thumbnail' => $imageName,
+                'thumbnail' => $url,
                 'updated_at' => now(),
             ]);
         if ($message == 0) {
@@ -164,10 +165,22 @@ class MessageController extends Controller
      */
     public function destroy(Request $request, Message $message)
     {
-        //
-        $message = Message::where('id', $request->id)->delete();
+        $thumbnail = Message::where('id', $request->id)->get()[0]->thumbnail;
+        // if ($request->user()->tokenCan('Admin')) {
+        //     $message = Message::where('id', $request->id)->delete();
+        // } else if ($request->user()->tokenCan('User')) {
+        //     $message = Message::where('id', $request->id)
+        //         ->where('author_id', $request->User()->id)->delete();
+        // } else {
+        //     abort(403, '你沒有刪除此貼文的權限!');
+        // }
+        //$message > 0 && !
+        if (!str_contains($thumbnail, 'http')) {
+            Storage::delete($thumbnail);
+           
+        }
 
-        return $message;
+        return $thumbnail;
     }
 
     public function count()

+ 3 - 6
resources/js/src/views/pages/blog/BlogDetail.vue

@@ -9,7 +9,7 @@
 				<!-- blogs -->
 				<b-col cols="12">
 					<b-card
-						:img-src="getThumbnail(blogDetail.blog.thumbnail)"
+						:img-src="blogDetail.blog.thumbnail"
 						img-top
 						img-alt="Blog Detail Pic"
 						:title="blogDetail.blog.title">
@@ -201,8 +201,8 @@
 						<b-link
 							:to="{ name: 'pages-blog-detail', params: { id: recentpost.id } }">
 							<b-img
-								:src="getThumbnail(recentpost.thumbnail)"
-								:alt="getThumbnail(recentpost.thumbnail).slice(6)"
+								:src="recentpost.thumbnail"
+								:alt="recentpost.thumbnail.slice(6)"
 								width="100"
 								rounded
 								height="70" />
@@ -390,9 +390,6 @@ export default {
 				});
 			}
 		},
-		getThumbnail(img) {
-			return img.includes("http") ? img : "/images/" + img;
-		}
 	},
 	watch: {
 		'$route': function () {

+ 1 - 1
resources/js/src/views/pages/blog/BlogEdit.vue

@@ -232,7 +232,7 @@ export default {
       formData.append('thumbnail', thumbnail);
 
       useJwt.postData('/api/message/editMessage', formData).then(response => {
-        //this.$router.push({ name: 'pages-blog-list' });
+        this.$router.push({ name: 'pages-blog-detail', params: { id: this.$route.params.id } });
       }).catch(error => {
         console.log(error)
         this.$toast({

+ 18 - 11
resources/js/src/views/pages/blog/BlogList.vue

@@ -14,8 +14,8 @@
           no-body>
           <b-link :to="{ name: 'pages-blog-detail', params: { id: blog.id } }">
             <b-img
-              :src="getThumbnail(blog.thumbnail)"
-              :alt="getThumbnail(blog.thumbnail).slice(5)"
+              :src="blog.thumbnail"
+              :alt="blog.thumbnail.slice(5)"
               class="card-img-top" />
           </b-link>
           <b-card-body>
@@ -173,8 +173,8 @@
           <b-media-aside class="mr-2">
             <b-link :to="{ name: 'pages-blog-detail', params: { id: recentpost.id } }">
               <b-img
-                :src="getThumbnail(recentpost.thumbnail)"
-                :alt="getThumbnail(recentpost.thumbnail).slice(6)"
+                :src="recentpost.thumbnail"
+                :alt="recentpost.thumbnail.slice(6)"
                 width="100"
                 rounded
                 height="70" />
@@ -259,6 +259,7 @@ import { getUserData } from '@/auth/utils'
 import ContentWithSidebar from '@core/layouts/components/content-with-sidebar/ContentWithSidebar.vue'
 import useJwt from '@/auth/jwt/useJwt'
 import moment from 'moment'
+import ToastificationContent from "@core/components/toastification/ToastificationContent.vue";
 
 export default {
   components: {
@@ -326,7 +327,18 @@ export default {
     deleteData(id) {
       useJwt.postData('/api/message/deleteMessage', { "id": id }).then(response => {
         console.log(response.data)
-        this.getAllData();
+        if (response.data > 0) {
+          this.getAllData();
+          this.$toast({
+            component: ToastificationContent,
+            props: {
+              title: `成功`,
+              icon: `CheckCircleIcon`,
+              variant: `success`,
+              text: `成功將此貼文刪除`,
+            }
+          });
+        }
       }).catch(error => {
         console.log(error)
       });
@@ -351,12 +363,7 @@ export default {
       } else {
         return 0;
       }
-
-
     },
-    getThumbnail(img) {
-      return img.includes("http") ? img : "/images/" + img;
-    }
   },
   computed: {
     blogLists() {
@@ -364,7 +371,7 @@ export default {
       return items.slice(
         (this.currentPage - 1) * this.perPage,
         this.currentPage * this.perPage
-      )
+      ) 
     },
     totalRows() {
       return this.blogList.length;

+ 3 - 3
resources/js/src/views/pages/blog/BlogPost.vue

@@ -206,15 +206,15 @@ export default {
       formData.append('content', this.blogPost.content);
       formData.append('preview', "preview");
       let tag = '';
-      if (this.blogPost.tag.length > 0) {
+      if (this.blogPost.tag && this.blogPost.tag.length > 0) {
         tag = this.blogPost.tag.join(',');
       }
       formData.append('tag', tag);
       formData.append('thumbnail', this.blogFile);
 
       useJwt.postData('/api/message/storeMessage', formData).then(response => {
-        console.log(this.blogPost);
-        this.$router.push({ name: 'pages-blog-list' });
+        console.log(response.data);
+        this.$router.push({ name: 'pages-blog-detail', params: { id: response.data.id } });
       }).catch(error => {
         console.log(error)
         this.$toast({

+ 2 - 1
routes/api.php

@@ -93,8 +93,9 @@ Route::middleware('auth:sanctum')->group(function () {
     Route::post('/message/storeComment', [MessageController::class, 'storeComment']);
     Route::post('/message/storeMessage', [MessageController::class, 'store']);
     Route::post('/message/editMessage', [MessageController::class, 'update']);
+    Route::post('/message/deleteMessage', [MessageController::class, 'destroy']);
 });
 
 Route::middleware(['auth:sanctum', 'abilities:Admin'])->group(function () {
-    Route::post('/message/deleteMessage', [MessageController::class, 'destroy']);
+    
 });