mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-08-14 17:05:54 +08:00
fix: enhance validation of workflow file types (#16203)
This commit is contained in:
parent
24b1a625b3
commit
ef1c1a12d2
@ -134,8 +134,9 @@ def _build_from_local_file(
|
|||||||
if row is None:
|
if row is None:
|
||||||
raise ValueError("Invalid upload file")
|
raise ValueError("Invalid upload file")
|
||||||
|
|
||||||
file_type = FileType(mapping.get("type", "custom"))
|
file_type = _standardize_file_type(extension="." + row.extension, mime_type=row.mime_type)
|
||||||
file_type = _standardize_file_type(file_type, extension="." + row.extension, mime_type=row.mime_type)
|
if file_type.value != mapping.get("type", "custom"):
|
||||||
|
raise ValueError("Detected file type does not match the specified type. Please verify the file.")
|
||||||
|
|
||||||
return File(
|
return File(
|
||||||
id=mapping.get("id"),
|
id=mapping.get("id"),
|
||||||
@ -173,10 +174,9 @@ def _build_from_remote_url(
|
|||||||
if upload_file is None:
|
if upload_file is None:
|
||||||
raise ValueError("Invalid upload file")
|
raise ValueError("Invalid upload file")
|
||||||
|
|
||||||
file_type = FileType(mapping.get("type", "custom"))
|
file_type = _standardize_file_type(extension="." + upload_file.extension, mime_type=upload_file.mime_type)
|
||||||
file_type = _standardize_file_type(
|
if file_type.value != mapping.get("type", "custom"):
|
||||||
file_type, extension="." + upload_file.extension, mime_type=upload_file.mime_type
|
raise ValueError("Detected file type does not match the specified type. Please verify the file.")
|
||||||
)
|
|
||||||
|
|
||||||
return File(
|
return File(
|
||||||
id=mapping.get("id"),
|
id=mapping.get("id"),
|
||||||
@ -198,8 +198,9 @@ def _build_from_remote_url(
|
|||||||
mime_type, filename, file_size = _get_remote_file_info(url)
|
mime_type, filename, file_size = _get_remote_file_info(url)
|
||||||
extension = mimetypes.guess_extension(mime_type) or ("." + filename.split(".")[-1] if "." in filename else ".bin")
|
extension = mimetypes.guess_extension(mime_type) or ("." + filename.split(".")[-1] if "." in filename else ".bin")
|
||||||
|
|
||||||
file_type = FileType(mapping.get("type", "custom"))
|
file_type = _standardize_file_type(extension=extension, mime_type=mime_type)
|
||||||
file_type = _standardize_file_type(file_type, extension=extension, mime_type=mime_type)
|
if file_type.value != mapping.get("type", "custom"):
|
||||||
|
raise ValueError("Detected file type does not match the specified type. Please verify the file.")
|
||||||
|
|
||||||
return File(
|
return File(
|
||||||
id=mapping.get("id"),
|
id=mapping.get("id"),
|
||||||
@ -250,8 +251,10 @@ def _build_from_tool_file(
|
|||||||
raise ValueError(f"ToolFile {mapping.get('tool_file_id')} not found")
|
raise ValueError(f"ToolFile {mapping.get('tool_file_id')} not found")
|
||||||
|
|
||||||
extension = "." + tool_file.file_key.split(".")[-1] if "." in tool_file.file_key else ".bin"
|
extension = "." + tool_file.file_key.split(".")[-1] if "." in tool_file.file_key else ".bin"
|
||||||
file_type = FileType(mapping.get("type", "custom"))
|
|
||||||
file_type = _standardize_file_type(file_type, extension=extension, mime_type=tool_file.mimetype)
|
file_type = _standardize_file_type(extension=extension, mime_type=tool_file.mimetype)
|
||||||
|
if file_type.value != mapping.get("type", "custom"):
|
||||||
|
raise ValueError("Detected file type does not match the specified type. Please verify the file.")
|
||||||
|
|
||||||
return File(
|
return File(
|
||||||
id=mapping.get("id"),
|
id=mapping.get("id"),
|
||||||
@ -302,12 +305,10 @@ def _is_file_valid_with_config(
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
def _standardize_file_type(file_type: FileType, /, *, extension: str = "", mime_type: str = "") -> FileType:
|
def _standardize_file_type(*, extension: str = "", mime_type: str = "") -> FileType:
|
||||||
"""
|
"""
|
||||||
If custom type, try to guess the file type by extension and mime_type.
|
Infer the possible actual type of the file based on the extension and mime_type
|
||||||
"""
|
"""
|
||||||
if file_type != FileType.CUSTOM:
|
|
||||||
return FileType(file_type)
|
|
||||||
guessed_type = None
|
guessed_type = None
|
||||||
if extension:
|
if extension:
|
||||||
guessed_type = _get_file_type_by_extension(extension)
|
guessed_type = _get_file_type_by_extension(extension)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user