>백엔드 개발 >파이썬 튜토리얼 >내 Flask 애플리케이션에서 정적 파일을 효과적으로 제공하려면 어떻게 해야 합니까?

내 Flask 애플리케이션에서 정적 파일을 효과적으로 제공하려면 어떻게 해야 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-24 10:25:20297검색

How Can I Serve Static Files Effectively in My Flask Application?

Flask에서 정적 파일 제공

Flask에서 HTML, CSS, JavaScript와 같은 정적 파일 제공은 웹 애플리케이션 구축에 필수적입니다. 그러나 이 주제에 대한 특정 문서를 찾는 것은 혼란스러울 수 있습니다.

기본적으로 Flask는 Flask 앱을 ​​정의하는 Python 모듈 옆에 있는 'static'이라는 하위 디렉터리에서 정적 파일을 자동으로 제공합니다. 이러한 파일에 액세스하려면 url_for 도우미를 사용하여 '정적' 접두사가 있는 URL을 생성하세요.

url_for('static', filename='css/main.css')

예를 들어, '/static/css/main.css' URL에 대한 요청은 다음을 반환합니다. 'static/css' 디렉터리에 있는 'main.css' 파일의 내용입니다. 이 방법은 정적 파일 전용 디렉터리가 있는 경우에 적합합니다.

다른 디렉터리에서 파일을 제공해야 하는 경우 send_from_directory 함수를 사용할 수 있습니다.

from flask import send_from_directory

@app.route('/files/<path:path>')
def get_file(path):
    return send_from_directory('files', path)

이렇게 하면 사용자가 URL '/files/'을 사용하여 'files' 디렉토리의 파일에 액세스할 수 있도록 허용합니다. 그러나 사용자가 허용된 디렉터리 외부의 파일에 액세스하지 못하도록 보안 경로 처리 기능이 마련되어 있는지 확인해야 합니다.

또 다른 옵션은 메모리에 파일을 보내는 것입니다. 파일 시스템에 쓰지 않고 파일을 생성하는 경우 BytesIO 객체를 send_file 함수에 전달하여 파일을 제공할 수 있습니다.

from io import BytesIO
from flask import send_file

@app.route('/download/file')
def download_file():
    # Generate the file in memory
    content = b'...'
    filename = 'report.pdf'

    # Send the file
    output = BytesIO(content)
    return send_file(output, mimetype='application/pdf', as_attachment=True, attachment_filename=filename)

경로 보안을 처리하고 공개하려는 파일만 제공해야 합니다. 이러한 방법을 사용할 때

위 내용은 내 Flask 애플리케이션에서 정적 파일을 효과적으로 제공하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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