From 568ef45d74144b562e6176f4950406276f7d0f5d Mon Sep 17 00:00:00 2001 From: baonudesifeizhai Date: Mon, 7 Jul 2025 16:02:31 -0400 Subject: [PATCH] fix(file): Handle remote file response and fix CI --- api/factories/file_factory.py | 9 +++++---- docker/docker/volumes/sandbox/conf/config.yaml | 0 2 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 docker/docker/volumes/sandbox/conf/config.yaml diff --git a/api/factories/file_factory.py b/api/factories/file_factory.py index 07b79a4d6f..5de1065214 100644 --- a/api/factories/file_factory.py +++ b/api/factories/file_factory.py @@ -250,12 +250,14 @@ def _build_from_remote_url( def _get_remote_file_info(url: str): file_size = -1 - filename = "" + filename = url.split("/")[-1].split("?")[0] or "unknown_file" + mime_type = mimetypes.guess_type(filename)[0] or "" resp = ssrf_proxy.head(url, follow_redirects=True) - resp.raise_for_status() + if resp.status_code >= 400: + raise ValueError(f"Failed to fetch remote file info from {url}, status code: {resp.status_code}") - content_disposition = resp.headers.get("Content-Disposition") + content_disposition = resp.headers.get("Content-Disposition", "") if content_disposition: # Use regex to parse filename from content-disposition header # RFC 2616, Section 19.5.1 @@ -266,7 +268,6 @@ def _get_remote_file_info(url: str): if not filename: filename = url.split("/")[-1].split("?")[0] or "unknown_file" - mime_type = resp.headers.get("Content-Type", "") if not mime_type: mime_type = mimetypes.guess_type(filename)[0] or "application/octet-stream" else: diff --git a/docker/docker/volumes/sandbox/conf/config.yaml b/docker/docker/volumes/sandbox/conf/config.yaml new file mode 100644 index 0000000000..e69de29bb2