fix: Enhance file type detection in HTTP Request node (#11797)
Signed-off-by: -LAN- <laipz8200@outlook.com> Co-authored-by: 谭成 <tancheng.sh@chinatelecom.cn> Co-authored-by: -LAN- <laipz8200@outlook.com>
This commit is contained in:
parent
1548501050
commit
44104797d6
@ -1,4 +1,5 @@
|
|||||||
import logging
|
import logging
|
||||||
|
import mimetypes
|
||||||
from collections.abc import Mapping, Sequence
|
from collections.abc import Mapping, Sequence
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
@ -156,20 +157,24 @@ class HttpRequestNode(BaseNode[HttpRequestNodeData]):
|
|||||||
|
|
||||||
def extract_files(self, url: str, response: Response) -> list[File]:
|
def extract_files(self, url: str, response: Response) -> list[File]:
|
||||||
"""
|
"""
|
||||||
Extract files from response
|
Extract files from response by checking both Content-Type header and URL
|
||||||
"""
|
"""
|
||||||
files = []
|
files = []
|
||||||
is_file = response.is_file
|
is_file = response.is_file
|
||||||
content_type = response.content_type
|
content_type = response.content_type
|
||||||
content = response.content
|
content = response.content
|
||||||
|
|
||||||
if is_file and content_type:
|
if is_file:
|
||||||
|
# Guess file extension from URL or Content-Type header
|
||||||
|
filename = url.split("?")[0].split("/")[-1] or ""
|
||||||
|
mime_type = content_type or mimetypes.guess_type(filename)[0] or "application/octet-stream"
|
||||||
|
|
||||||
tool_file = ToolFileManager.create_file_by_raw(
|
tool_file = ToolFileManager.create_file_by_raw(
|
||||||
user_id=self.user_id,
|
user_id=self.user_id,
|
||||||
tenant_id=self.tenant_id,
|
tenant_id=self.tenant_id,
|
||||||
conversation_id=None,
|
conversation_id=None,
|
||||||
file_binary=content,
|
file_binary=content,
|
||||||
mimetype=content_type,
|
mimetype=mime_type,
|
||||||
)
|
)
|
||||||
|
|
||||||
mapping = {
|
mapping = {
|
||||||
|
Loading…
Reference in New Issue
Block a user