ai_v/services/file_service.py
公司git 1ab7d94660 ```
feat(config): 添加代理配置选项

添加USE_PROXY和PROXY_URL配置项以支持请求代理功能

feat(utils): 新增代理URL获取工具函数

引入get_proxied_url工具函数用于处理代理请求

refactor(services): 将所有外部API请求通过代理转发

修改file_service、generation_service和task_service中的requests.get/post调用,
统一使用get_proxied_url包装URL以支持代理访问外部API服务
```
2026-02-02 12:54:43 +08:00

36 lines
1.0 KiB
Python

import os
import uuid
import time
import requests
from urllib.parse import quote
from werkzeug.utils import secure_filename
from config import Config
from extensions import s3_client
from utils import get_proxied_url
def handle_file_uploads(files):
"""处理文件上传到 MinIO"""
img_urls = []
for f in files:
ext = os.path.splitext(f.filename)[1]
filename = f"{uuid.uuid4().hex}{ext}"
s3_client.upload_fileobj(
f, Config.MINIO["bucket"], filename,
ExtraArgs={"ContentType": f.content_type}
)
img_urls.append(f"{Config.MINIO['public_url']}{quote(filename)}")
return img_urls
def get_remote_file_stream(url):
"""获取远程文件的流"""
req = requests.get(get_proxied_url(url), stream=True, timeout=60)
req.raise_for_status()
headers = {}
if req.headers.get('Content-Type'):
headers['Content-Type'] = req.headers['Content-Type']
else:
headers['Content-Type'] = 'application/octet-stream'
return req, headers