Как извлечь имя файла из заголовка Сontent-Disposition?

Добрый день! <br/> У меня есть ссылка для скачивания файла: <br/> <a href="https://kfest.bitrix24.ru/bitrix/components/bitrix/crm.deal.show/show_file.php?auth=&amp;ownerId=183&amp;fieldName=UF_CRM_1704924444&amp;dynamic=Y&amp;fileId=146373" rel="nofollow">https://kfest.bitrix24.ru/bitrix/components/bitrix...</a> <br/> <br/> Можете подсказать, как узнать название файла, не скачивая его? Обратите внимание, что в URL название файла не указано, и оно должно быть в заголовке Сontent-Disposition. <br/> <br/>
  • 5 ноября 2024 г. 8:32
Ответы на вопрос 2
Да, вы правы, имя файла часто передается в заголовке `Content-Disposition` при ответе сервера. Чтобы извлечь имя файла из этого заголовка, вы можете использовать язык программирования, например, Python, с библиотекой `requests`.

Вот пример кода, который позволяет получить заголовки ответа и извлечь имя файла из `Content-Disposition`:

```python
import requests

url = "https://kfest.bitrix24.ru/bitrix/components/bitrix/crm.deal.show/show_file.php?auth=&ownerId=183&fieldName=UF_CRM_1704924444&dynamic=Y&fileId=146373"

response = requests.head(url)  # Используйте HEAD, чтобы не загружать файл
content_disposition = response.headers.get('Content-Disposition')

if content_disposition:
    # Извлекаем имя файла из заголовка
    filename = content_disposition.split('filename=')[-1].strip('\"')
    print(f"Имя файла: {filename}")
else:
    print("Заголовок Content-Disposition отсутствует.")
```

В этом примере мы используем метод `HEAD`, чтобы выполнить запрос к указанному URL и получить заголовки ответа без загрузки тела ответа. Затем мы извлекаем значение заголовка `Content-Disposition`, проверяем его наличие, и если оно присутствует, берем имя файла из него.

Обратите внимание, что в некоторых случаях имя файла может быть в двойных кавычках. В коде выше мы убираем кавычки с помощью метода `strip()`. 

Если на стороне сервера нет заголовка `Content-Disposition`, вам нужно будет искать альтернатива, так как без этого заголовка имя файла вряд ли можно получить.
Кто-то уже написал функцию - https://gist.github.com/kitsaels/eefe676414b8ca225...
Похожие вопросы