# 上传媒体文件

调用本接口，上传图片、语音媒体资源文件以及普通文件，接口返回媒体资源标识media_id。  

## **接口调用说明**

调用本接口，上传媒体文件后，可获取媒体资源标识media_id。关于media_id：

* media_id是可复用的，同一个media_id多次使用。

* media_id对应的资源文件，仅能在钉钉客户端内使用。

* 媒体文件使用的空间是钉钉提供给组织的特定存储空间，调用本功能接口上传文件，不占用钉钉组织的钉盘空间。

## 权限

服务端API是以应用维度授权的，在调用接口前，确保已经为应用添加了接口权限。

|  应用类型   | 是否支持调用 |  权限申请方式   |                                        API Explorer调试                                        |
|---------|--------|-----------|----------------------------------------------------------------------------------------------|
| 企业内部应用  | 是      | 默认开通，无需申请 | [调试](https://open-dev.dingtalk.com/apiExplorer#/?devType=org&api=dingtalk.oapi.media.upload) |
| 第三方企业应用 | 是      | 默认开通，无需申请 | [调试](https://open-dev.dingtalk.com/apiExplorer#/?devType=isv&api=dingtalk.oapi.media.upload) |
| 第三方个人应用 | 否      | ---       | ---                                                                                          |

## 基本信息

**请求方式**：POST

**请求地址**：\`https://oapi.dingtalk.com/media/upload\`  
**说明**

使用multipart/form-data POST上传文件， 文件标识名为media。

## Query参数

|      名称      |   类型   | 是否必填 |   示例值    |                                                                                                                             描述                                                                                                                             |
|--------------|--------|------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| access_token | String | 是    | 6d1bxxxx | 调用该接口的应用凭证。 * 企业内部应用，通过[获取企业内部应用的access_token](https://open.dingtalk.com/document/orgapp/obtain-orgapp-token.md)接口获取。 * 第三方企业应用，通过[获取第三方企业应用的access_token](https://open.dingtalk.com/document/isvapp/obtains-the-enterprise-authorized-credential.md)接口获取。 |

## Body参数

|  名称   |    类型    | 是否必填 |           示例值            |                                                                                                                                       描述                                                                                                                                        |
|-------|----------|------|--------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| type  | String   | 是    | image                    | 媒体文件类型： * **image**：图片，图片最大20MB。支持上传jpg、gif、png、bmp格式。 * **voice**：语音，语音文件最大2MB。支持上传amr、mp3、wav格式。 * **video**：视频，视频最大20MB。支持上传mp4格式。 * **file**：普通文件，最大20MB。支持上传doc、docx、xls、xlsx、ppt、pptx、zip、pdf、rar格式。 **重要** 如果使用C#调用该接口出现**40004** （不合法的媒体文件类型）错误，需将参数**type**加在请求的URL后面。 |
| media | FileItem | 是    | C:/Users/Desktop/222.png | 要上传的媒体文件。 form-data中媒体文件标识，有filename、filelength、content-type等信息。                                                                                                                                                                                                                |

## 返回参数

|     名称     |   类型   |            示例值             |                                  描述                                  |
|------------|--------|----------------------------|----------------------------------------------------------------------|
| errcode    | Number | 0                          | 返回码。                                                                 |
| errmsg     | String | ok                         | 返回码描述。                                                               |
| type       | String | file                       | 媒体文件类型： * **image**：图片 * **voice**：语音 * **file**：普通文件 * **video**：视频 |
| media_id   | String | @#lAzPDgCwPn1mJiDOQoLpxxxx | 媒体文件上传后获取的唯一标识。                                                      |
| created_at | Number | 1599556098964              | 媒体文件上传时间戳。                                                           |

## 示例

**请求示例（HTTP）**


```http
POST https://oapi.dingtalk.com/media/upload?access_token=ACCESS_TOKEN
```



**请求示例（JAVA SDK）**


```java
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/media/upload");
OapiMediaUploadRequest req = new OapiMediaUploadRequest();
req.setType("image");
// 要上传的媒体文件
FileItem item = new FileItem("C:/Users/Desktop/222.png");
req.setMedia(item);
OapiMediaUploadResponse rsp = client.execute(req, access_token);
System.out.println(rsp.getBody());
```



**请求示例（curl）**


```javascript
curl --location --request POST 'https://oapi.dingtalk.com/media/upload?access_token=ACCESSTOKEN' \

--form 'media=@"C:/Users/Desktop/222.png"' \

--form 'type="file"'
```



**请求示例（PHPCurl）**


```javascript
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://oapi.dingtalk.com/media/upload?access_token=ACCESSTOKEN',
    CURLOPT_RETURNTRANSFER => true,

    CURLOPT_ENCODING => '',

    CURLOPT_MAXREDIRS => 10,

    CURLOPT_TIMEOUT => 0,

    CURLOPT_FOLLOWLOCATION => true,

    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,

    CURLOPT_CUSTOMREQUEST => 'POST',

    CURLOPT_POSTFIELDS => array('media'=> new CURLFILE('C:/Users/Desktop/222.png'),'type' => 'file'),

  ));

$response = curl_exec($curl);

curl_close($curl);

echo $response;
```



**返回示例**


```json
{
    "errcode": 0,
    "errmsg": "ok",
    "media_id": "$iAEKAqNwbmcDBgTNAk",
    "created_at": 1605863153573,
    "type": "image"
}
```



