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