
# 上传图纸文件 - UploadDrawing
#### 功能介绍
该API用于上传一个图纸文件并对该文件执行轻量化转换。
![](https://support.huaweicloud.com/api-craftartsipdcenter/public_sys-resources/note_3.0-zh-cn.png)
- 上传方式主要分为两种：单片上传和分片上传。
  - 单片上传：文件较小时可以采用该方式进行上传。
  
  - 分片上传：文件较大时可以采用分片上传，分片上传时分为两个阶段：初始化阶段和上传阶段。 初始化阶段：获取已上传的分片文件信息，如果该文件未上传过，则执行文件上传初始化相关的动作，包括生成文件上传信息和文件轻量化任务信息。
    上传阶段：根据初始化阶段获取的已上传的分片文件，将未上传的分片文件进行上传即可。如果该文件是第一次上传，则需要上传全部分片；如果第一次未能成功上传全部分片，则该阶段只上传未成功上传的分片文件即可；如果该文件之前已经成功上传过，则该阶段可以直接跳过。上传时不同分片之间可以并行上传。
    
   
- 文件类型分为两种：零件和装配体。
  - 零件：如果是零件直接上传即可。
  
  - 装配体：如果是装配体文件，则需要将装配体主文件以及子件打包成一个zip格式的压缩包，并且压缩包文件名必须和主文件名保持一致，否则系统无法识别主文件也就无法成功转换。如果装配体比较大采用分片上传方式时，在上传阶段必须将分片后缀名修改为.chunk格式。
   
 
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-craftartsipdcenter/ipdcenter_06_0034.html)。
#### URI
POST /basic/coremgr/public/api/v1/drawing/upload
#### 请求参数
表1请求Header参数 
| 参数            | 是否必选 | 参数类型   | 描述                                                                                                        |
|:---|:---|:---|:---|
| Authorization | 是    | String | 机机认证token，获取token请参考[链接](https://support.huaweicloud.com/devg-craftartsipdcenter/ipdcenter_08_0015.html)。 |
   
表2请求Body参数 
| 参数             | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|:---|
| file           | 是    | Binary  | 文件 最小长度：**1** 最大长度：**1073741824**                                                                                                                                                                                                                                                                                                                                                                                                                          |
| id             | 否    | String  | 文件id 最小长度：**2** 最大长度：**64**                                                                                                                                                                                                                                                                                                                                                                                                                               |
| name           | 是    | String  | 文件名称 最小长度：**2** 最大长度：**255**                                                                                                                                                                                                                                                                                                                                                                                                                            |
| check_code     | 是    | String  | 校验码 最小长度：**2** 最大长度：**255**                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| is_chunked     | 是    | Boolean | 是否分片：true,false                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| request_type   | 否    | String  | 请求类型：init,upload 枚举值： - **init**初始化  - **upload上传**       |
| chunk_total    | 否    | Integer | 分片总数 最小值：**0** 最大值：**1000**                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| chunk_index    | 否    | Integer | 分片索引 最小值：**0** 最大值：**1000**                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| source         | 是    | String  | 来源：图纸文件上传的来源方，当配置为"temp"时，会被视为临时文件，默认超过7天时会自动删除 最小长度：**1** 最大长度：**255**                                                                                                                                                                                                                                                                                                                                                                                   |
| type           | 是    | String  | 文件类型：PART,ASSEMBLY 枚举值： - **PART**部件  - **ASSEMBLY装配体**   |
| main_file_name | 否    | String  | 装配体主文件名 最小长度：**0** 最大长度：**255**                                                                                                                                                                                                                                                                                                                                                                                                                           |
   
#### 响应参数
**状态码： 200**
表3响应Body参数 
| 参数                           | 参数类型                                                                                                                                         | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|
| id                           | String                                                                                                                                       | 文件id 最小长度：**36** 最大长度：**40**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| name                         | String                                                                                                                                       | 文件名称 最小长度：**2** 最大长度：**512**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| status                       | String                                                                                                                                       | 上传状态: 上传中UPLOADING/上传完成SUCCESS/上传失败FAILED 枚举值： - **UPLOADING**上传中  - **SUCCESS**上传完成  - **FAILED**上传失败   |
| is_chunked                   | Boolean                                                                                                                                      | 是否分片：true,false                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| chunk_total                  | Integer                                                                                                                                      | 分片总数 最小值：**0** 最大值：**1000**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| source                       | String                                                                                                                                       | 来源 最小长度：**1** 最大长度：**255**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| type                         | String                                                                                                                                       | 文件类型：PART,ASSEMBLY 枚举值： - **PART**部件  - **ASSEMBLY**装配体                                                                                                                                                                                                      |
| create_time                  | String                                                                                                                                       | 创建时间 最小长度：**1** 最大长度：**30**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| update_time                  | String                                                                                                                                       | 更新时间 最小长度：**0** 最大长度：**30**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| file_lightweight_task_result | [FileLightweightTaskResultRspVo] object | 文件轻量化转换任务Vo对象                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| file_chunk_upload_result     | Array of [FileChunkUploadRspVo] objects           | 文件分片上传响应Vo对象 数组长度：**0 - 1000**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   
 表4FileLightweightTaskResultRspVo 
| 参数                    | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|:---|
| file_id               | String | 文件id 最小长度：**36** 最大长度：**40**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| file_name             | String | 文件名称 最小长度：**2** 最大长度：**255**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| status                | String | 轻量化状态：UPLOADING,UNMOUNTED,MOUNTING,SUCCESS,FAILED 枚举值： - **UPLOADING**上传中  - **UNMOUNTED**未挂载  - **MOUNTING**挂载中  - **SUCCESS**成功  - **FAILED**失败   |
| failed_reason         | String | 失败原因 最小长度：**0** 最大长度：**500**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| task_id               | String | 轻量化任务id 最小长度：**1** 最大长度：**40**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| create_time           | String | 创建时间 最小长度：**1** 最大长度：**30**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| update_time           | String | 更新时间 最小长度：**0** 最大长度：**30**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| lightweight_file_path | String | 轻量化文件路径 最小长度：**0** 最大长度：**500**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   
 表5FileChunkUploadRspVo 
| 参数           | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|
| chunk_id     | String  | 文件分片id 最小长度：**36** 最大长度：**40**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| chunk_status | String  | 上传状态: 上传中UPLOADING/上传完成SUCCESS/上传失败FAILED 枚举值： - **UPLOADING**  - **SUCCESS**  - **FAILED**   |
| chunk_index  | Integer | 分片索引 最小值：**0** 最大值：**1000**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| create_time  | String  | 创建时间 最小长度：**1** 最大长度：**30**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| update_time  | String  | 更新时间 最小长度：**0** 最大长度：**30**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   
**状态码： 400**
表6响应Body参数 
| 参数         | 参数类型   | 描述                                                                                                                                                                                |
|:---|:---|:---|
| error_code | String | 错误码 最小长度：**8** 最大长度：**36** |
| error_msg  | String | 错误描述 最小长度：**2** 最大长度：**512** |
   
#### 请求示例
- 零件上传-单片上传
  ```
  /basic/coremgr/public/api/v1/drawing/upload
  {
    "name" : "4903N12.STEP",
    "check_code" : "fefeb94f12c7d604c4b2c9570ac847864a731e9a029a2d6d81021bbc3ab52343",
    "is_chunked" : false,
    "type" : "PART",
    "source" : "company name",
    "file" : "binary（二进制文件流）"
  }
  ```
  
- 零件上传-分片上传（初始化阶段）
  ```
  /basic/coremgr/public/api/v1/drawing/upload
  {
    "name" : "010758215.stp",
    "check_code" : "b82bdd878b4788f95744eaa646a7a286ef5f4110caa703f9b521f4fbb59f48aa",
    "is_chunked" : true,
    "chunk_total" : 29,
    "type" : "PART",
    "source" : "company name",
    "request_type" : "init"
  }
  ```
  
- 零件上传-分片上传（上传阶段）
  ```
  /basic/coremgr/public/api/v1/drawing/upload
  {
    "id" : "4f2bddfa-dee7-4858-b41c-34705e9642a3",
    "name" : "010758215.stp",
    "check_code" : "b82bdd878b4788f95744eaa646a7a286ef5f4110caa703f9b521f4fbb59f48aa",
    "is_chunked" : true,
    "type" : "PART",
    "source" : "company name",
    "request_type" : "upload",
    "chunk_total" : 29,
    "chunk_index" : 1,
    "file" : "binary（二进制文件流）"
  }
  ```
  
- 装配体上传-单片上传
  ```
  /basic/coremgr/public/api/v1/drawing/upload
  {
    "name" : "ensamble_suicide.zip",
    "check_code" : "af101d8c580ea70cb3c05fccf871a38303fb94e6cca00ff4214aebbab674b5df",
    "is_chunked" : false,
    "type" : "ASSEMBLY",
    "main_file_name" : "ensamble_suicide.asm.1",
    "source" : "company name",
    "file" : "binary（二进制文件流）"
  }
  ```
  
- 装配体上传-分片上传（初始化阶段）
  ```
  /basic/coremgr/public/api/v1/drawing/upload
  {
    "name" : "engine_test_02总装.asm.1.zip",
    "check_code" : "a4a3e7aca08918a148c52ffee862add3c78ac57c204847f91151297ce211a58a",
    "is_chunked" : true,
    "chunk_total" : 25,
    "type" : "ASSEMBLY",
    "main_file_name" : "engine_test_02总装.asm.1",
    "source" : "company name",
    "request_type" : "init"
  }
  ```
  
- 装配体上传-分片上传（上传阶段）
  ```
  /basic/coremgr/public/api/v1/drawing/upload
  {
    "name" : "engine_test_02总装.asm.1.zip",
    "check_code" : "a4a3e7aca08918a148c52ffee862add3c78ac57c204847f91151297ce211a58a",
    "is_chunked" : true,
    "chunk_total" : 25,
    "type" : "ASSEMBLY",
    "main_file_name" : "engine_test_02总装.asm.1",
    "source" : "company name",
    "request_type" : "upload",
    "id" : "f1afbc15-b4db-4ff6-9bd4-80160a4f1bf8",
    "file" : "binary（二进制文件流）",
    "chunk_index" : 1
  }
  ```
  
 
#### 响应示例
**状态码：200**
零件上传-单片上传
```
{
"result_code": "PUB-000000",
"result_info": "success",
"datas": {
"id": "ef9a97c7-6344-4118-8486-612d10fdf2e4",
"name": "4903N12.STEP",
"is_chunked": false,
"chunk_total": 0,
"status": "UPLOADING",
"type": "PART",
"create_time": "2024-06-21 09:22:30",
"file_lightweight_task_result": {
"file_id": "ef9a97c7-6344-4118-8486-612d10fdf2e4",
"file_name": "4903N12.STEP",
"status": "UPLOADING",
"task_id": "3d02ef30-0e56-43c0-ab0a-5d6bca5ab7ba",
"create_time": "2024-06-21 09:22:30"
}
}
}
```
零件上传-分片上传（初始化阶段）
```
{
"result_code": "PUB-000000",
"result_info": "success",
"datas": {
"id": "4f2bddfa-dee7-4858-b41c-34705e9642a3",
        "name": "010758215.stp",
        "is_chunked": true,
        "chunk_total": 29,
        "status": "UPLOADING",
        "type": "PART",
        "create_time": "2024-06-21 10:18:10",
        "file_lightweight_task_result":{
        "file_id": "4f2bddfa-dee7-4858-b41c-34705e9642a3",
          "file_name": "010758215.stp",
          "status": "UPLOADING",
          "task_id": "3bfe5727-ec30-4539-bbc0-4be54fbdaee2",
          "create_time": "2024-06-21 10:18:10"
}
}
}
```
零件上传-分片上传（上传阶段）
```
{
"result_code": "PUB-000000",
"result_info": "success",
"datas": {
"id": "4f2bddfa-dee7-4858-b41c-34705e9642a3",
"name": "010758215.stp",
"is_chunked": true,
"chunk_total": 29,
"status": "UPLOADING",
"type": "PART",
"create_time": "2024-06-21 10:18:10",
"file_lightweight_task_result": {
"file_id": "4f2bddfa-dee7-4858-b41c-34705e9642a3",
"file_name": "010758215.stp",
"status": "UPLOADING",
"task_id": "3bfe5727-ec30-4539-bbc0-4be54fbdaee2",
"create_time": "2024-06-21 10:18:10"
}
}
}
```
装配体-单片上传
```
{
"result_code": "PUB-000000",
"result_info": "success",
"datas": {
"id": "4466cc07-1b58-42d1-a0e7-748ef8f59204",
"name": "ensamble_suicide.zip",
"status": "UPLOADING",
"is_chunked": false,
"chunk_total": 0,
"source": "company name",
"type": "ASSEMBLY",
"file_lightweight_task_result": {
"file_id": "4466cc07-1b58-42d1-a0e7-748ef8f59204",
"file_name": "ensamble_suicide.zip",
"status": "UPLOADING",
"task_id": "c06edf2b-a1e1-4f15-bbf3-3bfae556b8b9",
"create_time": "2024-06-21 14:21:11"
}
}
}
```
装配体-分片上传（初始化阶段）
```
{
"result_code": "PUB-000000",
"result_info": "success",
"datas": {
"id": "f1afbc15-b4db-4ff6-9bd4-80160a4f1bf8",
"name": "engine_test_02总装.asm.1.zip",
"status": "UPLOADING",
"is_chunked": true,
"chunk_total": 25,
"source": "company name",
"type": "ASSEMBLY",
"create_time": "2024-06-21 14:11:16",
"file_lightweight_task_result": {
"file_id": "f1afbc15-b4db-4ff6-9bd4-80160a4f1bf8",
"file_name": "engine_test_02总装.asm.1.zip",
"status": "UPLOADING",
"task_id": "bd0f7935-d7a1-4d0a-8aa7-e742d80e984d",
"create_time": "2024-06-21 14:11:16"
}
}
}
```
装配体-分片上传（上传阶段）
```
{
"result_code": "PUB-000000",
"result_info": "success",
"datas": {
"id": "f1afbc15-b4db-4ff6-9bd4-80160a4f1bf8",
"name": "engine_test_02总装.asm.1.zip",
"status": "UPLOADING",
"is_chunked": true,
"chunk_total": 25,
"source": "company name",
"type": "ASSEMBLY",
"create_time": "2024-06-21 14:11:16",
"file_lightweight_task_result": {
"file_id": "f1afbc15-b4db-4ff6-9bd4-80160a4f1bf8",
"file_name": "engine_test_02总装.asm.1.zip",
"status": "UPLOADING",
"task_id": "bd0f7935-d7a1-4d0a-8aa7-e742d80e984d",
"create_time": "2024-06-21 14:11:16"
}
}
}
```
**状态码： 400**
错误响应
```
示例一：
{
  "error_code" : "01090001",
  "error_msg" : "系统错误，请联系管理员！"
}
示例二：
{
  "error_code" : "01099901",
  "error_msg" : "请求参数无效！"
}
示例三：
{
  "error_code" : "01099902",
  "error_msg" : "认证失败！"
}
```
#### 状态码
| 状态码 | 描述         |
|:---|:---|
| 200 | 文件上传响应Vo对象 |
| 400 | 错误响应       |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-craftartsipdcenter/ErrorCode.html)。
