>  기사  >  백엔드 개발  >  Laravel 프레임워크를 사용하여 파일 다운로드 기능을 구현하기 위한 샘플 코드

Laravel 프레임워크를 사용하여 파일 다운로드 기능을 구현하기 위한 샘플 코드

黄舟
黄舟원래의
2017-09-15 09:35:142797검색

이 글은 파일 다운로드 기능을 구현하기 위한 Laravel의 예제 코드를 소개하는 내용을 중점적으로 다루었습니다. 필요하신 분들은 참고하시면 됩니다.

Laravel의 마지막 LTS(장기 지원) 버전은 2015년 6월 출시된 Laravel 5.1입니다. LTS 버전에 대한 합의에 따르면 2년간의 버그 수정 지원이 올해 중순에 종료되므로, 필연적으로 LTS의 후속 버전인 Laravel 5.5가 출시될 예정입니다. 이 글은 Laravel에서 파일 다운로드 기능을 구현하는 방법을 소개하는 데 중점을 두고 있습니다. 다운로드 메소드를 사용하면 사용자의 브라우저가 지정된 경로의 파일을 다운로드하도록 할 수 있습니다. 다운로드 메소드는 파일 이름을 메소드의 두 번째 매개변수로 승인합니다. 이 이름은 사용자가 파일을 다운로드할 때 표시되는 파일 이름입니다. 마지막으로 HTTP 헤더 정보가 포함된 배열을 메소드의 세 번째 매개변수로 전달할 수 있습니다.

return response()->download($pathToFile);
return response()->download($pathToFile, $name, $headers);

다음은 제가 프로젝트에서 사용하는 파일 다운로드 기능입니다.

public function downloadfile($filename)
  {
    $file = public_path().'/test.xls';
    return response()->download($file,$filename.'.xls');
  }

그런데 처음에는 진행이 별로 원활하지 않았습니다. laravel에 포함된 파일 다운로드 기능이 왜 실패했나요? 오류 메시지는 다음과 같습니다.

FatalErrorException in HandleCors.php line 18:
Call to undefined method Symfony\Component\HttpFoundation\BinaryFileResponse::header()

아마도 헤더( ) 메소드가 존재하지 않는 것으로 정의되었으며 다양한 탐색 끝에 해결책을 찾았습니다. 헤더를 재정의하고 CorsMiddleware의 핸들 메소드에 다음 메소드를 추가할 수 있습니다.

class CorsMiddleware
{
  public function handle($request, Closure $next)
  {
    $response = $next($request);
    $response->headers->set('Access-Control-Allow-Origin' , '*');
    $response->headers->set('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT, DELETE');
    $response->headers->set('Access-Control-Allow-Headers', 'Content-Type, Accept, Authorization, X-Requested-With, Application');
    return $response;
  }
}

마지막으로 헤더를 재정의한 후 다음을 수행할 수 있습니다. 다운로드 기능을 이용해 보세요. 나중에 정상적으로 접속이 가능한 것으로 확인되었습니다.

요약

위 내용은 Laravel 프레임워크를 사용하여 파일 다운로드 기능을 구현하기 위한 샘플 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.