|
|
|
@@ -1,13 +1,32 @@ |
|
|
|
import mimetypes |
|
|
|
import os |
|
|
|
import platform |
|
|
|
import re |
|
|
|
import urllib.parse |
|
|
|
import warnings |
|
|
|
from collections.abc import Mapping |
|
|
|
from typing import Any |
|
|
|
from uuid import uuid4 |
|
|
|
|
|
|
|
import httpx |
|
|
|
import magic |
|
|
|
|
|
|
|
try: |
|
|
|
import magic |
|
|
|
except ImportError: |
|
|
|
if platform.system() == "Windows": |
|
|
|
warnings.warn( |
|
|
|
"To use python-magic guess MIMETYPE, you need to run `pip install python-magic-bin`", stacklevel=2 |
|
|
|
) |
|
|
|
elif platform.system() == "Darwin": |
|
|
|
warnings.warn("To use python-magic guess MIMETYPE, you need to run `brew install libmagic`", stacklevel=2) |
|
|
|
elif platform.system() == "Linux": |
|
|
|
warnings.warn( |
|
|
|
"To use python-magic guess MIMETYPE, you need to run `sudo apt-get install libmagic1`", stacklevel=2 |
|
|
|
) |
|
|
|
else: |
|
|
|
warnings.warn("To use python-magic guess MIMETYPE, you need to install `libmagic`", stacklevel=2) |
|
|
|
magic = None # type: ignore |
|
|
|
|
|
|
|
from pydantic import BaseModel |
|
|
|
|
|
|
|
from configs import dify_config |
|
|
|
@@ -49,7 +68,7 @@ def guess_file_info_from_response(response: httpx.Response): |
|
|
|
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": |
|
|
|
if mimetype == "application/octet-stream" and magic is not None: |
|
|
|
try: |
|
|
|
mimetype = magic.from_buffer(response.content[:1024], mime=True) |
|
|
|
except magic.MagicException: |