diff --git a/api/controllers/common/helpers.py b/api/controllers/common/helpers.py index 2bae203712..fa42ce4c43 100644 --- a/api/controllers/common/helpers.py +++ b/api/controllers/common/helpers.py @@ -7,6 +7,7 @@ from typing import Any from uuid import uuid4 import httpx +import magic from pydantic import BaseModel from configs import dify_config @@ -47,6 +48,13 @@ def guess_file_info_from_response(response: httpx.Response): # If guessing fails, use Content-Type from response headers mimetype = response.headers.get("Content-Type", "application/octet-stream") + # Use python-magic to guess MIME type if still unknown or generic + if mimetype == "application/octet-stream": + try: + mimetype = magic.from_buffer(response.content[:1024], mime=True) + except magic.MagicException: + pass + extension = os.path.splitext(filename)[1] # Ensure filename has an extension