PHP에서 Laravel 8, UPPY 및 TUS로 재개 가능한 파일 업로드 구현
요구 사항
Laravel : Laravel은 표현력이 뛰어나고 우아한 구문을 사용하는 웹 응용 프로그램 프레임워크입니다. 지원되는 버전 > 5.x.x . 이 가이드에서 사용하는 버전은 Laravel 8입니다.
Uppy : 세련된 모듈식 오픈 소스 JavaScript 파일 업로더입니다.
Tus : 재개 가능한 파일 업로드를 위한 개방형 프로토콜입니다.
Tus-PHP : tus 재개 가능 업로드 프로토콜 v1.0.0용 순수 PHP 서버 및 클라이언트입니다.
Redis : 데이터베이스, 캐시 및 메시지 브로커로 사용되는 오픈 소스(BSD 라이센스), 메모리 내 데이터 구조 저장소입니다.
지도 시간
1. NPM으로 Uppy 및 지원되는 플러그인(Dashboard, Tus)을 설치합니다.
npm install uppy
npm install @uppy/dashboard
npm install @uppy/tus
<button type='button' class='btn btn-success btn-sm' id='file_upload' name='file_upload'>Upload File</button>
3. 파일을/tus 끝점에 게시하려면 CSRF-TOKEN을 추가해야 합니다. Uppy.js에 전달할 blade.php에 토큰을 보관할 메타 태그를 만듭니다.
<meta name="csrf-token" content={"{ csrf_token() }}">
4. JavaScript 파일에서 Uppy 구성을 생성합니다.
import Uppy from '@uppy/core';
import Tus from '@uppy/tus'
import Dashboard from '@uppy/dashboard';
const uppy = new Uppy({
debug: false,
autoProceed: false,
restrictions: {
maxFileSize: 1000000,
maxNumberOfFiles: 1,
allowedFileTypes: ['image/*'],
}
})
.use(Dashboard, {
target: 'body',
trigger: '#file_upload',
closeAfterFinish: true,
browserBackButtonClose: false,
showProgressDetails: true,
})
.use(Tus, {
endpoint: '/tus', // use your tus endpoint here
retryDelays: [0, 1000, 3000, 5000],
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
})
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt-get update
sudo apt-get install redis
redis-server
redis-cli ping
composer require ankitpokhrel/tus-php
php artisan make:provider TusServiceProvider
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use TusPhp\Tus\Server as TusServer;
class TusServiceProvider extends ServiceProvider
{
/**
* Register services.
*
* @return void
*/
public function register()
{
//
$this->app->singleton('tus-server', function ($app) {
$server = new TusServer('redis');
$server->setApiPath('/tus');
$server->setUploadDir(storage_path('app/public/uploads'));
return $server;
});
}
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
//
}
}
Route::any('/tus/{any?}', function () {
return app('tus-server')->serve();
})->where('any', '.*');
그게 전부입니다. 사용자는 네트워크 오류가 발생하거나 브라우저를 닫은 후 파일 업로드를 재개할 수 있습니다. 도움이 필요하면 comments을 누르십시오.
Reference
이 문제에 관하여(PHP에서 Laravel 8, UPPY 및 TUS로 재개 가능한 파일 업로드 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nkwaten/implementing-resumable-file-uploads-in-php-with-laravel-8-uppy-and-tus-4h8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)