All about

파일을 다운로드할 때 파일명을 미리 확인하는 것은 HTTP 헤더를 통해 가능합니다. 일반적으로 웹 서버는 Content-Disposition 헤더를 사용하여 클라이언트에게 전송된 파일의 이름을 제공합니다.
다음은 requests 라이브러리를 사용하여 파일을 다운로드하고, Content-Disposition 헤더를 확인하여 파일명을 얻는 간단한 예제입니다.

import requests
from urllib.parse import unquote

url = 'http://8.8.8.8/example.zip'
response = requests.get(url)

# 파일명 확인
content_disposition = response.headers.get('Content-Disposition')

if content_disposition:
    # Content-Disposition 헤더에서 파일명 추출
    _, params = content_disposition.split(';')
    filename_param = next((s.strip() for s in params.split(',') if s.startswith('filename=')), None)

    if filename_param:
        # 파일명이 URL 인코딩 되어있을 수 있으므로 디코딩
        filename = unquote(filename_param.split('=')[1])
    else:
        # Content-Disposition 헤더에 filename 파라미터가 없는 경우, 기본 파일명 사용
        filename = 'downloaded_file'

else:
    # Content-Disposition 헤더가 없는 경우, 기본 파일명 사용
    filename = 'downloaded_file'

# 파일 다운로드
with open(filename, 'wb') as file:
    file.write(response.content)

print(f"File '{filename}' downloaded successfully.")

 

이 코드는 Content-Disposition 헤더를 확인하고, 해당 헤더에서 파일명을 추출합니다. 만약 헤더에 filename 파라미터가 없는 경우에는 기본적으로 “downloaded_file”로 설정합니다. 파일명이 URL 인코딩 되어있을 수 있으므로, urllib.parse.unquote 함수를 사용하여 디코딩합니다.
실제로는 서버가 Content-Disposition 헤더를 어떻게 설정했느냐에 따라 다를 수 있으므로, 상황에 맞게 코드를 수정해야 합니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading