Laravel 파일 업로드: 포괄적인 단계별 튜토리얼

게시 됨: 2024-10-07

목차

비녀장

Laravel 파일 업로드

파일 업로드는 많은 웹 애플리케이션에서 필수적인 기능으로, 사용자가 이미지, 문서, 비디오 등 다양한 파일 형식을 업로드할 수 있도록 해줍니다. 널리 사용되는 PHP 프레임워크인 Laravel은 파일 업로드를 처리하는 원활하고 안전한 방법을 제공합니다. 이 튜토리얼에서는 Laravel에서 처음부터 파일 업로드를 설정하고 구현하는 방법을 살펴보겠습니다. 당신이 초보자이든 중급 개발자이든, 이 가이드는 Laravel에서 파일 업로드를 마스터하는 데 도움이 될 것입니다.

1. Laravel 파일 업로드 소개

파일 업로드는 최신 웹 애플리케이션에 필수적입니다. 프로필 사진, 이력서, 멀티미디어 콘텐츠 등 무엇을 업로드하든 안정적이고 안전한 파일 업로드 시스템을 갖추는 것이 중요합니다. 내장된 기능을 갖춘 Laravel은 이 프로세스를 간단하고 효율적으로 만듭니다. 파일 유효성 검사, 저장 및 보안을 지원하는 Laravel은 파일 업로드를 관리하는 원활한 방법을 제공합니다.

이 튜토리얼에서는 다음을 수행합니다.

  • 파일 업로드 양식을 만듭니다.
  • 파일 유효성 검사를 처리합니다.
  • 서버에 파일을 저장합니다.
  • 업로드된 파일을 표시합니다.
  • 파일 업로드 프로세스를 보호합니다.

이 가이드를 마치면 Laravel 애플리케이션에서 파일 업로드를 구현하고 사용자 정의하는 방법을 확실하게 이해하게 될 것입니다.

2. 전제조건

튜토리얼을 시작하기 전에 컴퓨터에 다음이 설치되어 있는지 확인하세요.

  • PHP >= 8.0
  • Composer(PHP용 종속성 관리자)
  • 라라벨 9 이상
  • 데이터베이스 관리를 위한 MySQL 또는 SQLite
  • Laravel 및 PHP에 대한 기본 지식

Laravel 설정 방법이 익숙하지 않은 경우 공식 Laravel 문서를 참조하거나 다음 명령을 사용하여 새 Laravel 프로젝트를 생성하세요.

세게 때리다

코드 복사

작곡가 생성 프로젝트 –prefer-dist laravel/laravel 파일 업로드 튜토리얼

프로젝트가 생성되면 프로젝트 폴더로 이동합니다.

세게 때리다

코드 복사

CD 파일 업로드 튜토리얼

3. Laravel 프로젝트 설정

Laravel 프로젝트가 설정되면 기본 설정을 구성해 보겠습니다.

데이터베이스 구성:루트 디렉터리에서 .env 파일을 열고 데이터베이스 자격 증명을 업데이트합니다. MySQL을 사용하는 경우 다음 필드를 업데이트하세요.
일반 텍스트
코드 복사
DB_CONNECTION=mysql

DB_HOST=127.0.0.1

DB_PORT=3306

DB_DATABASE=laravel_upload

DB_USERNAME=루트

DB_PASSWORD=

.env 파일을 구성한 후 다음 명령을 실행하여 기본 테이블을 마이그레이션합니다.
세게 때리다
코드 복사
PHP 장인 마이그레이션

A. 부트스트랩 설치(선택 사항)

업로드 양식의 스타일을 지정하려면 Bootstrap을 쉽게 포함할 수 있습니다. resources/views/layouts 폴더 에서 layout.blade.php 파일을 생성 하고 Bootstrap을 포함시킵니다:

HTML
코드 복사
<!DOCTYPE HTML>

<html lang=”en”>

<머리>

<메타 문자 집합=”UTF-8″>

<메타 이름=”뷰포트” 콘텐츠=”너비=장치 너비, 초기 규모=1.0″>

<title>파일 업로드 튜토리얼</title>

<link href=”https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css” rel=”stylesheet”>

</head>

<본문>

<div 클래스=”컨테이너 mt-5″>

@yield('내용')

</div>

</body>

</html>

4. 파일 업로드 양식 만들기

이제 파일 업로드 양식을 만들어 보겠습니다.

컨트롤러 생성:파일 업로드를 처리하기 위한 컨트롤러를 생성합니다.
세게 때리다
코드 복사
PHP artisan make:컨트롤러 FileUploadController

양식 정의:resources/views 폴더 에서 다음 코드를 사용하여 upload.blade.php 라는 파일을 만듭니다 .
HTML
코드 복사
@extends('layouts.layout')

@section('콘텐츠')

<div 클래스=”행”>

<div 클래스=”col-md-6 오프셋-md-3″>

<h3 class=”text-center”>파일 업로드</h3>

<양식 작업=”{{ 경로('file.upload.post') }}” 방법=”POST” enctype=”multipart/form-data”>

@csrf

<div 클래스=”양식-그룹 mb-3″>

<label for=”file”>파일 선택:</label>

<입력 유형=”파일” 클래스=”양식 제어” 이름=”파일” ID=”파일”>

@error('파일')

<small class=”text-danger”>{{ $message }}</small>

@enderror

</div>

<button type=”submit” class=”btn btn-primary”>업로드</button>

</form>

</div>

</div>

@endsection

경로 설정:Routes/web.php 파일 에서 양식 표시 및 파일 업로드 처리를 위한 경로를 정의하십시오.
PHP
코드 복사
App\Http\Controllers\FileUploadController를 사용하세요.

경로::get('upload', [FileUploadController::class, 'showForm'])->name('file.upload');

경로::post('upload', [FileUploadController::class, 'uploadFile'])->name('file.upload.post');

5. 파일 업로드 로직 처리

FileUploadController.php 에서 파일 업로드 프로세스를 처리하는 로직을 작성합니다.

양식을 보여주세요:
PHP
코드 복사
공개 함수 showForm() {

return view('업로드');

}

파일 업로드 처리:
동일한 컨트롤러에서 파일 업로드를 처리하기 위해 다음 메서드를 추가합니다.
PHP
코드 복사
공개 함수 uploadFile(요청 $request) {

// 업로드된 파일의 유효성을 검사합니다.

$요청->확인([

'파일' => '필수|파일|mimes:jpeg,png,pdf,docx|max:2048',

]);

// 파일 저장

if ($request->file('파일')) {

$fileName = 시간() . '_' . $request->file->getClientOriginalName();

$filePath = $request->file('file')->storeAs('uploads', $fileName, 'public');

}

return back()->with('성공', '파일이 성공적으로 업로드되었습니다.');

}

이 메서드는 파일 유효성 검사를 수행하고 파일이 있는지 확인한 후 storeAs 메서드를 사용하여 저장합니다.

6. 파일 업로드 유효성 검사

사용자가 허용된 파일 형식과 크기만 업로드하도록 하려면 유효성 검사가 중요합니다. Laravel의 유효성 검사 방법은 이 프로세스를 단순화합니다. 여기에 사용된 유효성 검사 규칙은 다음과 같습니다.

  • 필수 : 파일이 업로드되었는지 확인합니다.
  • file : 업로드된 항목이 파일인지 확인합니다.
  • mimes : 허용되는 파일 형식을 지정합니다(예: jpeg, png, pdf, docx).
  • max : 최대 파일 크기를 킬로바이트 단위로 지정합니다(예: 2048KB = 2MB).

애플리케이션 요구 사항에 맞게 이러한 규칙을 사용자 정의할 수 있습니다.

7. 파일 저장

Laravel의 Storage 파사드를 사용하면 파일을 쉽게 저장할 수 있습니다. 위의 예에서는 storeAs 메소드를 사용하여 public/uploads 디렉토리 에 파일을 저장합니다 . public/uploads 폴더에 액세스할 수 있게 하려면 저장소 디렉터리를 공용 폴더와 연결해야 합니다. 다음 명령을 실행하십시오.

세게 때리다

코드 복사

PHP 장인 저장소:링크

이 명령은 Storage/app/public 에서 public/storage 로의 심볼릭 링크를 생성합니다 .

8. 업로드된 파일 표시

업로드된 파일을 표시하려면 스토리지 폴더에서 해당 파일을 검색하고 Storage 파사드를 사용하여 URL을 생성하세요. 이미지나 파일을 표시하는 방법은 다음과 같습니다.

컨트롤러에서:
PHP
코드 복사
공개 함수 showUploads() {

$files = 저장소::disk('공개')->files('업로드');

return view('업로드', Compact('파일'));

}

  1. 보기에서:

resources/views/uploads.blade.php 파일을 생성하세요 :
HTML
코드 복사
@extends('layouts.layout')

@section('콘텐츠')

<h3>업로드된 파일:</h3>

<ul>

@foreach($files를 $file로)

<li><a href=”{{ 자산('storage/' . $file) }}”>{{ 기본 이름($file) }}</a></li>

@endforeach

</ul>

@endsection

  1. 그러면 다운로드 링크가 포함된 업로드된 파일 목록이 생성됩니다.

9. 파일 업로드 보안

파일 업로드를 제대로 처리하지 않으면 보안 위험이 발생할 수 있습니다. 파일 업로드를 보호하기 위한 몇 가지 모범 사례는 다음과 같습니다.

  • 허용되는 파일 형식 제한: 항상 MIME 규칙을 사용하여 파일 형식의 유효성을 검사합니다 .
  • 파일 크기 제한: 과도한 서버 리소스 소비를 방지하기 위해 파일 크기를 제한합니다.
  • 적절한 파일 이름 지정 사용: 기존 파일을 덮어쓰지 않도록 고유한 이름을 사용하여 파일을 저장합니다.
  • 파일 검사: 악성 업로드를 탐지하려면 바이러스 백신이나 파일 검사 도구를 사용하는 것이 좋습니다.
  • 공개 액세스 제한: 공개적으로 액세스할 수 있는 디렉터리에 중요한 파일을 저장하지 마세요. 개인 파일을 위해 Laravel의 저장소 디렉터리를 사용하고 해당 파일을 안전하게 제공하기 위한 컨트롤러를 생성할 수 있습니다.

10. 결론

파일 업로드는 많은 웹 애플리케이션에서 필수적인 기능이며, Laravel은 내장된 도구와 기능을 통해 프로세스를 단순화합니다. 이 튜토리얼에서는 파일 업로드 설정, 파일 유효성 검사 및 저장, 표시, 업로드 프로세스 보안에 대한 기본 사항을 다루었습니다. 이러한 기반을 통해 프로젝트 요구 사항에 맞게 파일 업로드 기능을 사용자 정의하고 확장할 수 있습니다.