Initial commit
This commit is contained in:
71
app/Http/Controllers/FileServerController.php
Normal file
71
app/Http/Controllers/FileServerController.php
Normal file
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\EntryFile;
|
||||
use App\Services\FileServersService;
|
||||
use Illuminate\Http\Client\ConnectionException;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class FileServerController extends Controller {
|
||||
|
||||
public function __construct(private FileServersService $fs) {}
|
||||
|
||||
/**
|
||||
* @throws ConnectionException
|
||||
*/
|
||||
public function uploadChunk(Request $request, string $section): JsonResponse {
|
||||
$request->validate([
|
||||
'file' => 'required|file',
|
||||
'file_uuid' => 'required|string|max:128',
|
||||
'current_chunk' => 'required|integer|min:0',
|
||||
'total_chunks' => 'required|integer|min:1',
|
||||
'filename' => 'required|string|max:255',
|
||||
]);
|
||||
|
||||
$type = $section;
|
||||
$fileUuid = $request->input('file_uuid');
|
||||
$currentChunk = (int) $request->input('current_chunk');
|
||||
$totalChunks = (int) $request->input('total_chunks');
|
||||
$filename = $request->input('filename');
|
||||
|
||||
$data = $this->fs->uploadChunk(
|
||||
$request->file('file'),
|
||||
$fileUuid,
|
||||
$currentChunk,
|
||||
$totalChunks,
|
||||
$filename,
|
||||
$type
|
||||
);
|
||||
|
||||
if( !isset( $data['file'] ) || $data['file'] === false ){
|
||||
$data['finished'] = false;
|
||||
return response()->json($data);
|
||||
}
|
||||
|
||||
\Cache::put("uploaded_file_{$fileUuid}", [
|
||||
'uuid' => $fileUuid,
|
||||
'type' => $type,
|
||||
'filename' => $filename,
|
||||
'filepath' => $data['file_path'],
|
||||
'filesize' => $data['file']['size'],
|
||||
'favorite_server' => $data['favorite_server'],
|
||||
'favorite_at' => time()
|
||||
], now()->addHours(2) );
|
||||
|
||||
$data['finished'] = true;
|
||||
return response()->json($data);
|
||||
|
||||
}
|
||||
|
||||
public function download(Request $request, int $entry_id, EntryFile $file ) {
|
||||
|
||||
if( $file->entry_id != $entry_id ) {
|
||||
abort(404);
|
||||
}
|
||||
|
||||
// TODO: DL Count.
|
||||
return redirect( $this->fs->getDownloadFileUrl( $file) );
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user