diff --git a/video-gen-api/app/api/v1/upload_material.py b/video-gen-api/app/api/v1/upload_material.py index 243b0591..c7d2496a 100644 --- a/video-gen-api/app/api/v1/upload_material.py +++ b/video-gen-api/app/api/v1/upload_material.py @@ -110,6 +110,7 @@ async def async_batch_upload_material( target_source_model = source_model_map.get(task.source_model) + # 检查资源id是否存在,非资源id if target_source_model: query = ( select(GeneratedResource.id) @@ -133,6 +134,7 @@ async def async_batch_upload_material( resource_ids_to_upload = valid_resource_ids else: + #用户提交的直接是资源id query = ( select(GeneratedResource.id) .where(GeneratedResource.id.in_(task.resource_ids)) diff --git a/video-gen-api/app/services/resources_material_service.py b/video-gen-api/app/services/resources_material_service.py index 27e21f82..92b6a479 100644 --- a/video-gen-api/app/services/resources_material_service.py +++ b/video-gen-api/app/services/resources_material_service.py @@ -7,7 +7,7 @@ from sqlalchemy.orm import aliased from app.models.generated_resource import GeneratedResource from app.models.resources_material import ResourcesMaterial from app.schemas.resources_material import GeneratedResourceOut, ResourcesMaterialOut - +from app.services.resource_signed_url_service import build_resource_signed_url async def get_resources_material_list( db: AsyncSession, @@ -69,10 +69,8 @@ async def get_resources_material_list( if generated_resource: resource = GeneratedResourceOut( file_name=generated_resource.file_name, - resource_url=generated_resource.resource_url, - remote_url=generated_resource.remote_url, + resource_url = build_resource_signed_url(generated_resource.resource_url) if generated_resource.resource_url else "", storage_type=generated_resource.storage_type, - storage_path=generated_resource.storage_path, file_size_bytes=generated_resource.file_size_bytes, source_model=generated_resource.source_model, source_model_module=generated_resource.source_model_module, diff --git a/video-gen-api/app/services/upload_queue.py b/video-gen-api/app/services/upload_queue.py index 267b1ebf..76f5ba79 100644 --- a/video-gen-api/app/services/upload_queue.py +++ b/video-gen-api/app/services/upload_queue.py @@ -217,9 +217,11 @@ async def _upload_single_material( resource_id: str, db=None ) -> dict: + own_db = False if db is None: from app.models.base import async_session db = async_session() + own_db = True try: oauth = await db.execute( @@ -253,6 +255,7 @@ async def _upload_single_material( resource_type = resource.resource_type storage_path = resource.storage_path + file_name = resource.file_name if resource_type not in ["image", "video"]: return { @@ -267,10 +270,10 @@ async def _upload_single_material( } return await _upload_to_juliang( - oauth_id, storage_path, resource_type, advertiser_id, resource, db, user_id + oauth_id, storage_path, resource_type, advertiser_id, resource, db, user_id, file_name ) finally: - if db is not None: + if own_db and db is not None: await db.close() @@ -282,8 +285,13 @@ async def _upload_to_juliang( resource: GeneratedResource, db, current_user_id: str, + file_name: str, ) -> dict: - filename = os.path.basename(storage_path) + #如果file_name不等于空,那么就是用file_name,否则用storage_path的文件名 + if file_name: + filename = file_name + else: + filename = os.path.basename(storage_path) if resource_type == "image": if resource.file_size_bytes > 5 * 1024 * 1024: