You've already forked FrameTour-RenderWorker
feat(storage): 添加文件上传的 Content-Type 检测功能
- 添加文件扩展名到 Content-Type 的映射表 - 实现根据文件扩展名获取对应 Content-Type 的函数 - 将上传日志中的调试信息改为信息级别并显示 Content-Type - 使用正确的 Content-Type 替换默认的 application/octet-stream - 支持 mp
This commit is contained in:
@@ -15,6 +15,29 @@ import requests
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
# 文件扩展名到 Content-Type 的映射
|
||||||
|
_CONTENT_TYPE_MAP = {
|
||||||
|
'.mp4': 'video/mp4',
|
||||||
|
'.aac': 'audio/aac',
|
||||||
|
'.ts': 'video/mp2t',
|
||||||
|
'.m4a': 'audio/mp4',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def _get_content_type(file_path: str) -> str:
|
||||||
|
"""
|
||||||
|
根据文件扩展名获取 Content-Type
|
||||||
|
|
||||||
|
Args:
|
||||||
|
file_path: 文件路径
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Content-Type 字符串
|
||||||
|
"""
|
||||||
|
ext = os.path.splitext(file_path)[1].lower()
|
||||||
|
return _CONTENT_TYPE_MAP.get(ext, 'application/octet-stream')
|
||||||
|
|
||||||
|
|
||||||
def _apply_http_replace_map(url: str) -> str:
|
def _apply_http_replace_map(url: str) -> str:
|
||||||
"""
|
"""
|
||||||
应用 HTTP_REPLACE_MAP 环境变量替换 URL
|
应用 HTTP_REPLACE_MAP 环境变量替换 URL
|
||||||
@@ -69,7 +92,8 @@ def upload_file(url: str, file_path: str, max_retries: int = 5, timeout: int = 6
|
|||||||
|
|
||||||
# 应用 HTTP_REPLACE_MAP 替换 URL
|
# 应用 HTTP_REPLACE_MAP 替换 URL
|
||||||
http_url = _apply_http_replace_map(url)
|
http_url = _apply_http_replace_map(url)
|
||||||
logger.debug(f"Uploading to: {http_url}")
|
content_type = _get_content_type(file_path)
|
||||||
|
logger.info(f"Uploading to: {http_url} (Content-Type: {content_type})")
|
||||||
|
|
||||||
retries = 0
|
retries = 0
|
||||||
while retries < max_retries:
|
while retries < max_retries:
|
||||||
@@ -80,7 +104,7 @@ def upload_file(url: str, file_path: str, max_retries: int = 5, timeout: int = 6
|
|||||||
data=f,
|
data=f,
|
||||||
stream=True,
|
stream=True,
|
||||||
timeout=timeout,
|
timeout=timeout,
|
||||||
headers={"Content-Type": "application/octet-stream"}
|
headers={"Content-Type": content_type}
|
||||||
) as response:
|
) as response:
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
logger.info(f"Upload succeeded: {file_path}")
|
logger.info(f"Upload succeeded: {file_path}")
|
||||||
|
|||||||
Reference in New Issue
Block a user