[*] FastApi генерирует заданный minio download_url для файла.
Django получает метадаты через FastApi, затем загружает файл с использованием requests.get (download_url, stream = true) и возвращает его с помощью wreaminghtpress
Вот мой представление Django для загрузки файла: < /p>
Код: Выделить всё
from django.http import StreamingHttpResponse, Http404
from django.utils.encoding import smart_str
from urllib.parse import quote
import requests
def download_file(request, file_id):
print(f'file_id = {file_id}')
try:
url = f"http://89.150.34.163:8000/api/v1/student/download/{file_id}"
response = requests.get(url)
if response.status_code != 200:
raise Http404("Файл не найден")
json_data = response.json()
download_url = json_data.get("download_url")
original_filename = json_data.get("original_filename", f"file_{file_id}")
print(f'filename: {original_filename}')
if not download_url:
raise Http404("Ссылка на скачивание отсутствует")
file_response = requests.get(download_url, stream=True)
if file_response.status_code != 200:
raise Http404("Ошибка при скачивании файла")
filename_ascii = smart_str(original_filename)
filename_utf8 = quote(original_filename)
response = StreamingHttpResponse(
streaming_content=file_response.iter_content(chunk_size=8192),
content_type=file_response.headers.get("Content-Type", "application/octet-stream")
)
response['Content-Disposition'] = (
f'attachment; filename="{filename_ascii}"; '
f"filename*=UTF-8''{filename_utf8}"
)
return response
except Exception as e:
print(f"Ошибка при скачивании: {e}")
raise Http404("Ошибка при скачивании файла")
I tried using smart_str and quote() to handle Unicode/cyrillic filenames and validating that FastAPI returns the correct download_url and Original_filename .
Есть предложения? Есть ли лучший способ прокси -файл из назначенного Minio URL через Django без коррупции?
Подробнее здесь: https://stackoverflow.com/questions/796 ... he-file-is