Просмотр исходного кода

Merge pull request #1956 from visuddhinanda/laravel

add AssetsController
visuddhinanda 2 лет назад
Родитель
Сommit
3b2d1a5983

+ 76 - 0
app/Http/Controllers/AssetsController.php

@@ -0,0 +1,76 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Storage;
+use Illuminate\Support\Facades\App;
+
+class AssetsController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index()
+    {
+        //
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  string  $bucket $name
+     * @return \Illuminate\Http\Response
+     */
+    public function show($bucket,$name)
+    {
+        //
+        $filename = $bucket.'/'.$name;
+        if(Storage::missing($filename)){
+            return $this->error('404',404,404);
+        }
+        //header("Content-Type: {$type1}/{$type1}");
+        if (App::environment('local')) {
+            $url = Storage::url($filename);
+        }else{
+            $url = Storage::temporaryUrl($filename, now()->addDays(2));
+        }
+        return redirect($url);
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, $id)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy($id)
+    {
+        //
+    }
+}

+ 17 - 3
app/Http/Controllers/AttachmentController.php

@@ -4,16 +4,20 @@ namespace App\Http\Controllers;
 
 use Illuminate\Http\File;
 use Illuminate\Support\Facades\Storage;
-use App\Models\Attachment;
 use Illuminate\Http\Request;
+use Illuminate\Support\Str;
+use Illuminate\Support\Facades\App;
+
 use App\Http\Api\AuthApi;
 use App\Http\Api\StudioApi;
 use App\Http\Resources\AttachmentResource;
-use Illuminate\Support\Str;
+use App\Models\Attachment;
+
 use Intervention\Image\ImageManagerStatic as Image;
 use FFMpeg\FFMpeg;
 
 
+
 class AttachmentController extends Controller
 {
     /**
@@ -142,7 +146,17 @@ class AttachmentController extends Controller
             case 'video':
                 $tmpFile = $file->storeAs($bucket,$name,'local');
                 $path = storage_path('app/'.$tmpFile);
-                $ffmpeg = FFMpeg::create();
+                if (App::environment('local')) {
+                    $ffmpeg = FFMpeg::create();
+                }else{
+                    $ffmpeg = FFMpeg::create(array(
+                        'ffmpeg.binaries' => '/usr/bin/ffmpeg',
+                        'ffprobe.binaries' => '/usr/bin/ffprobe',
+                        'timeout' => 3600,
+                        'ffmpeg.threads' => 1,
+                    ));
+                }
+
                 $video = $ffmpeg->open($path);
                 $frame = $video->frame(\FFMpeg\Coordinate\TimeCode::fromSeconds(1));
                 $screenShot = storage_path("app/tmp/{$fileId}.jpg");

+ 3 - 1
routes/web.php

@@ -4,7 +4,7 @@ use Illuminate\Support\Facades\Route;
 use App\Http\Controllers\SentenceInfoController;
 use App\Http\Controllers\WbwAnalysisController;
 use App\Http\Controllers\PageIndexController;
-
+use App\Http\Controllers\AssetsController;
 /*
 |--------------------------------------------------------------------------
 | Web Routes
@@ -24,6 +24,8 @@ Route::get('/', [PageIndexController::class,'index']);
 Route::get('/api/sentence/progress/image', [SentenceInfoController::class,'showprogress']);
 Route::get('/api/sentence/progress/daily/image', [SentenceInfoController::class,'showprogressdaily']);
 Route::get('/wbwanalyses', [WbwAnalysisController::class,'index']);
+Route::get('/attachments/{bucket}/{name}',[AssetsController::class,'show']);
+
 Route::get('/export/wbw', function (){
     return view('export_wbw',['sentences' => []]);
 });