You've already forked VptPassiveAdapter
- 删除UploadFileToOSS函数中的contentType参数 - 更新所有调用UploadFileToOSS的地方,移除传递的Content-Type值 - 简化上传逻辑,不再手动设置HTTP请求头中的Content-Type - 依赖服务器端自动检测文件类型进行处理
72 lines
2.0 KiB
Go
72 lines
2.0 KiB
Go
package api
|
|
|
|
import (
|
|
"ZhenTuLocalPassiveAdapter/logger"
|
|
"context"
|
|
"fmt"
|
|
|
|
"go.uber.org/zap"
|
|
"golang.org/x/sync/errgroup"
|
|
)
|
|
|
|
// UploadFaceData implements the coordinated upload flow: Get Config -> Upload -> Notify
|
|
func UploadFaceData(ctx context.Context, scenicId int64, deviceNo string, faceImg, thumbImg, srcImg []byte, facePos FacePositionInfo) error {
|
|
// 1. Get Upload Config
|
|
uploadConfig, err := GetUploadConfig(ctx, scenicId, deviceNo)
|
|
if err != nil {
|
|
logger.Error("获取上传配置失败", zap.String("deviceNo", deviceNo), zap.Error(err))
|
|
return err
|
|
}
|
|
|
|
logger.Info("获取到VIID任务ID", zap.Int64("taskId", uploadConfig.TaskID))
|
|
|
|
// 2. Parallel Upload to OSS
|
|
g, subCtx := errgroup.WithContext(ctx)
|
|
|
|
// Upload Face Image
|
|
g.Go(func() error {
|
|
if len(faceImg) > 0 {
|
|
if err := UploadFileToOSS(subCtx, uploadConfig.FaceUploadURL, faceImg); err != nil {
|
|
return fmt.Errorf("upload face image failed: %w", err)
|
|
}
|
|
}
|
|
return nil
|
|
})
|
|
|
|
// Upload Thumbnail Image
|
|
g.Go(func() error {
|
|
if len(thumbImg) > 0 {
|
|
if err := UploadFileToOSS(subCtx, uploadConfig.ThumbnailUploadURL, thumbImg); err != nil {
|
|
return fmt.Errorf("upload thumbnail image failed: %w", err)
|
|
}
|
|
}
|
|
return nil
|
|
})
|
|
|
|
// Upload Source Image
|
|
g.Go(func() error {
|
|
if len(srcImg) > 0 {
|
|
if err := UploadFileToOSS(subCtx, uploadConfig.SourceUploadURL, srcImg); err != nil {
|
|
return fmt.Errorf("upload source image failed: %w", err)
|
|
}
|
|
}
|
|
return nil
|
|
})
|
|
|
|
if err := g.Wait(); err != nil {
|
|
// Report failure
|
|
SubmitFailure(ctx, uploadConfig.TaskID, "UPLOAD_FAILED", err.Error())
|
|
logger.Error("文件上传失败", zap.Int64("taskId", uploadConfig.TaskID), zap.Error(err))
|
|
return err
|
|
}
|
|
|
|
// 3. Submit Result
|
|
if err := SubmitResult(ctx, uploadConfig.TaskID, facePos); err != nil {
|
|
logger.Error("提交结果失败", zap.Int64("taskId", uploadConfig.TaskID), zap.Error(err))
|
|
return err
|
|
}
|
|
|
|
logger.Info("VIID任务完成", zap.Int64("taskId", uploadConfig.TaskID))
|
|
return nil
|
|
}
|