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