---
title: 萌宠音频互动方案 - 音频上传云存
summary: 萌宠音频互动方案的音频上传云存模块，包含获取临时地址上传签名、上传音频文件、获取上传状态、轮询大文件上传状态、保存宠物媒体文件五个步骤。依赖 fetchDeviceFileSign、uploadFile、fetchDeviceFileUploadState、fetchBigPublicFileUploadState、fileRelationSave 五个关键 API。
---

## 音频上传云存

### 功能介绍

<div style="marginTop: 20px;">
<img alt="原始视频" src="https://images.tuyacn.com/rms-static/798fd710-4159-11f0-9fb9-e1834df84344-1749051299585.png?tyName=upload" width="300">
</div>

1. 音频上传云存主要包含以下步骤：获取临时地址上传签名、上传音频文件、获取上传状态、轮询大文件上传状态、保存宠物媒体文件

2. 音频上传云存，主要依赖以下5个关键能力：

- **获取临时地址上传签名**  
   开发者可通过 [fetchDeviceFileSign](/cn/miniapp/develop/ray/api/device-file/upload-file/fetchDeviceFileSign) API 获取精彩时刻服务的详细配置信息。

- **上传音频文件**  
   开发者可通过 [uploadFile](/cn/miniapp/develop/miniapp/api/network/upload/uploadFile) API 上传音频文件。

- **获取上传状态**  
   开发者可通过 [fetchDeviceFileUploadState](/cn/miniapp/develop/ray/api/device-file/upload-file/fetchDeviceFileUploadState) API 获取上传状态。

- **轮询大文件上传状态**  
   开发者可通过 [fetchBigPublicFileUploadState](/cn/miniapp/develop/ray/api/device-file/upload-file/fetchBigPublicFileUploadState) 轮询大文件上传状态。

- **保存宠物媒体文件**  
   开发者可通过 [fileRelationSave](/cn/miniapp/develop/ray/api/ai/aiPet/pet_media-device/fileRelationSave) 保存宠物媒体文件。

### 交互流程

```mermaid
sequenceDiagram
    participant 用户
    participant 面板
    participant 云端

    rect rgb(220, 245, 245)
        Note over 用户, 云端: 录音文件上传流程
        用户 ->> 面板: 完成录音
        面板 ->> 云端: fetchDeviceFileSign()请求临时地址和签名
        云端 -->> 面板: 返回临时地址和签名
    end

    rect rgb(245, 245, 220)
        Note over 面板, 云端: 上传录音文件
        面板 ->> 云端: uploadFile()向临时地址上传文件
        云端 -->> 面板: 上传中...
    end

    rect rgb(245, 220, 245)
        Note over 面板, 云端: 查询上传状态
        alt 文件大小正常
            面板 ->> 云端: fetchDeviceFileUploadState()
            云端 -->> 面板: 返回云存文件信息
        else 文件过大（大于5M）
            loop 轮询获取云存key
                面板 ->> 云端: fetchBigPublicFileUploadState()
                云端 -->> 面板: 返回云存文件信息
            end
        end
    end

    rect rgb(220, 245, 220)
        Note over 面板, 云端: 完成上传操作
        面板 ->> 云端: fileRelationSave()
        云端 -->> 面板: 上传完成，返回云存文件信息
    end
```
