| @@ -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 | |||