YesApi 接口文档

203 base64图片上传接口 App.CDN.UploadImgByBase64

接口路径(新):http://api.yesapi.net/api/App/CDN/UploadImgByBase64

接口路径(旧):http://api.yesapi.net/?s=App.CDN.UploadImgByBase64

接口描述: 上传 为方便上传文件,可将待上传的文件二进制内容进行base64编码后上传,必须使用POST传递file参数,只是用POST请求方式还不行,一定要把file参数放到POST里,而不能拼到链接GET参数。上传后,可以在小白平台-数据-素材库查看已上传的图片文件。已经支持的格式:jpeg/jpg/gif/bmp/png/icon/svg

接口标签:免费(每月最高10万次)付费(包月/按量/私服)验签

接口流量
5
请求协议
HTTP/HTTPS
请求方式
GET/POST(推荐POST)
编码格式
UTF-8
返回格式
JSON

在线测试接口    收藏此接口    在线接口开发    接口请求日记


接口参数 若无特殊说明,接口参数同时支持GET和POST传递;推荐:查询/删除用GET,创建/更新用POST。

参数名字参数类型是否必须默认值备注参数说明
app_key字符串必须最小:32公共参数 开发者应用的app_key,查看我的app_key,如果还没有,可免费注册开通。
sign字符串可选公共参数接口签名,其中:
  • 使用动态签名,签名生成算法请见:如何生成签名,或直接使用封装好的SDK开发包,通过在线测试工具可进行签名的对比和调试。
  • 使用静态签名点击获取我的静态签名
  • 关闭签名,如果不需要签名,可进入小白开放平台接口签名设置关闭或开启签名。
  • 定制签名支持专属签名算法定制开发
uuid字符串可选公共参数 UUID,当前登录的应用会员ID,即全局唯一用户ID,查看我的应用会员。传递此参数后,可以在开放平台查看每日活跃会员统计图表。uuid需要和token一起传递。
token字符串可选公共参数 当前登录会员的会话凭证,可通过会员登录接口获得。uuid需要和token一起传递。
return_data字符串可选0公共参数 数据返回结构,其中:
  • return_data=0,返回完整的接口结果,示例:{"ret":200,"data":{"err_code":0,"err_msg":"","title":"Hi YesApi,欢迎使用小白开放接口!"},"msg":"V3.1.0 YesApi App.Hello.World","_t": 1657513450, "_auth": "9bcd54ff53e71a1d80d37c52bdfabf76"}
  • return_data=1,返回简洁的接口结果,只返回data字段,结构简化一级,更扁平,示例:{"err_code":0,"err_msg":"V3.1.0 YesApi App.Hello.World","title":"Hi YesApi,欢迎使用小白开放接口!"}
file字符串必须数据源:POST此参数必须使用POST方式传递,且必须进行base64编码后传递,对待上传文件二进制内容进行basse64编码后的数据,此部分数据需要纳入签名。格式示例:file=data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==
file_name字符串必须上传的文件名。例如:file_name=test.jpg
file_type字符串可选上传的文件类型,用于纪录备忘。例如:file_type=image/jpg
upload_full_file_path字符串可选【仅限使用自己的七牛CDN时生效】用于指定上传图片文件的完整路径,支持目录设置和原始的文件名,例如:upload_full_file_path=images/123.jpg。为空时由系统自动生成随机文件名

在线测试

参数是否必填
s 固定
uuid 可选
token 可选
return_data 可选
file 必须
file_name 必须
file_type 可选
upload_full_file_path 可选

客户端请求示例

查看我的接口域名、app_key和app_secrect 客户端接入指南(如何生成签名) 开启/关闭签名

请求:
{你的接口域名}/?s=App.CDN.UploadImgByBase64&file={base64编码后的图片数据,例如下面这样}&file_name=aa.png&file_type=image/png&app_key={你的app_key}&sign={动态签名}

以下参数使用POST方式传递:
{
    "file": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAQCAYAAADwMZRfAAACVklEQVQ4jT1TbbLTMAxcfyVpSxhm
OsAheiyuxIE4z+PxgzaNE3+yUujLjOs0trSr1cr8+PWzm96Rc0bn3lqDtQ7DMOB0OsE5h1qP8yQr
JVjTeceioaOUAi8/ctEzyMLoR2OMrm1LmlgCxnHEwNVqRYorMpNNIaAHBxv3jLjvSAyWzNY7XfIu
yHHbdK9kKI8AOibttWFdnrp7Oeu9kbKUY+C9hycnSybWloM2Lz2fT333TBIs7/hBS7Qd8L1UGB46
ogtKIEXRQ8rwxesupUkiY6iVD2SVwT84f7qgJWoSnxv1OBLYboEKRdCnNkXXM+6WDMZpImund0yj
PsjwNWWiFEVI7jgMU1B0EblSSKEs/y+XWcud5hMMmcfHHTNZe8/sonTdC7YSj84wSEqS4ESQbIDz
+Qw3WeLybhT9Ktw4qOAfLd7ZIXlUyF7QGdSZJcl3Jq5kuke2nOUK81enhJkVwYYwgg3C9XrF7XaD
M0cLC9n10nnWlG18LHj+vX8AEhIx7rCSrVAHWefphO9fv8HbgMwE4oO806GV+rCEuEQsjxUbmyFG
rKkibxRWvCElSGvf3n7j/f0PxU0qsCyhG1xVrdS9vuO+LvD0zfz5C7Wb4Od5ppWz1idB67picF7J
SoLX7DCHPj03DbQs2VAajhlbnGn3JpesBl0uF1LcD3+QneylHMP58ksgiDh9eTyw3Fcp55hENZM7
umOD/++PY/gEQEbD8bsMYt43ipuxpZ1jMMJz2NFC1464REbsCixtXzil00j7NjQumdjCPZUNhYI6
jsBkJ0rR8A+sfY/QK75NfQAAAABJRU5ErkJggg==
",
}


返回:
{
    "ret": 200,
    "data": {
        "err_code": 0,
        "err_msg": "",
        "id":"100",
        "url": "http://cdn7.okayapi.com/20170920223113_62b11e9002a749d4d468824b0c10bbd6"
    },
    "msg": ""
}
<?php
// 引入PHP SDK文件
require_once dirname(__FILE__) . '/OkayApiClient.php';

// 调用小白开放接口(根据需要,可动态调整请求参数)
$uploadFile = 'a.jpg';
$rs = OkayApiClient::request('App.CDN.UploadImgByBase64', array('file' => base64EncodeImage($uploadFile), 'file_name' => 'a.jpg', 'file_type' => 'image/jpg'));

function base64EncodeImage ($image_file) {
    $base64_image = '';
    $image_info = getimagesize($image_file);
    $image_data = fread(fopen($image_file, 'r'), filesize($image_file));
    $base64_image = 'data:' . $image_info['mime'] . ';base64,' . chunk_split(base64_encode($image_data));
    return $base64_image;
}

// 输出结果
print_r($rs);

/**
Array
(
    [ret] => 200
    [data] => Array
    (
        [err_code] => 0
        [err_msg] => 
        [url] => http://cd8.okayapi.com/20170920223113_62b11e9002a749d4d468824b0c10bbd6
    )

    [msg] => 小白开放接口:App.CDN.UploadImgByBase64
)
 */

接口返回及数据结构

返回字段类型说明
ret整型接口状态码,200表示成功,4xx表示客户端非法请求,5xx表示服务端异常,查看异常错误码
dataobject/array/混合接口返回的业务数据,由不同的API接口决定不同的数据返回字段和结构。当return_data=1时,接口只会返回此data字段。
data.err_code整型操作状态码,0成功,1失败
data.err_msg字符串错误提示信息,err_code非0时参考此提示信息
data.url字符串成功上传时返回的图片URL,失败时为空
data.https_url字符串成功上传时返回的HTTPS图片URL,失败或不支持HTTPS时为空
data.id字符串成功上传时返回的文件ID,失败时为空
msg字符串提示信息,面向技术人员的帮助或错误提示信息
_t整数服务器当时Unix时间戳,例如:1657513450
_auth字符串反向数字签名,可用于客户端进行反向验证,防止数据篡改,例如:9bcd54ff53e71a1d80d37c52bdfabf76。验证算法:_auth = md5(data返回的JSON字符串 + _t当前时间戳字符串 + APP_SECRECT密钥字符串),若需要关闭或开启请提交工单

ret异常错误码

错误码错误类型错误描述信息解决方法
ret = 200成功请求成功
ret = 400客户端非法请求非法请求,参数错误1、根据接口文档的接口参数,提供正确的参数
ret = 401客户端非法请求用户未登录,或登录凭证已过期1、如果用户未注册,请先用注册接口;2、如果注册未登录或会话过期,请先用登录接口
ret = 402客户端非法请求IP已被黑名单拦截1、进入接口IP设置,移除IP黑名单设置
ret = 403客户端非法请求IP未命中白名单1、进入接口IP设置,添加IP白名单设置,或清空IP白名单设置
ret = 404客户端非法请求接口服务不存在1、查看小白接口大全,确保接口服务名称拼写正确
ret = 406客户端非法请求非法app_key,请核对你所在的接口域名1、在我的套餐查看并核对接口域名
ret = 407客户端非法请求当前应用已过期1、进行续费或续约,延长应用有效期
ret = 408客户端非法请求当前应用存在异常,已被封号1、联系在线客服人工处理(系统升级维护中,或 应用存在异常已被平台封号)
ret = 409客户端非法请求签名错误1、使用在线测试,校正签名;2、关闭特定或全部签名设置;3、如果过期,可以进行续约/升级
ret = 410客户端非法请求权限不足,非系统管理员1、应用权限不足,可联系在线客服咨询沟通
ret = 411客户端非法请求权限不足,应用管理员未登录1、请提供应用管理员的admin_uuid和admin_token参数后重试
ret = 412客户端非法请求权限不足,非应用管理员1、请在果创云把会员设置为管理员
ret = 413客户端非法请求本月接口流量超出,已被临时冻结1、开通接口流量叠加包,或升级套餐
ret = 414客户端非法请求并发过高1、请降低请求频率,检测是否有死循环调用,或是否被他人恶意使用。如果流量确实很大,可联系在线客服进行定制化或私有云部署。
ret = 415客户端非法请求接口已被开发者关闭1、接口已被开发者关闭,请进入果创云接口开关重新开启
ret = 416客户端非法请求权限不足,个人免费版套餐无法使用专业版接口1、请先升级终身会员/标准版/旗舰版/企业版
ret = 417客户端非法请求子应用异常,如:子应用签名错误/已过期/流量不足1、使用主账号在管理和配置 客户端/子应用
ret = 500小白接口异常如果出现此错误,请联系技术人员处理1、进入QQ交流群897815708,反馈问题;2、或者提交工单,一天内回复

常见问题FAQ

Q1 问:出现 414 Request-URI Too Large 时怎么解决?答:对于全部参数,改用POST方式传递,并且从GET链接里面去掉。

Q2 问:浏览器请求和在线测试接口正常,但本地程序无法正常获取接口结果答:需要注意UTF编码,以及存在中文和特殊字符时的URL编码。GET请求参数应统一进行URL编码后再请求,POST表单数据正常传递即可。

Q3 问:请求接口时提示JSON格式错误答:请先阅读,然后检测本地传递的参数是否符合JSON格式,使用JSON在线工具辅助检测,注意双引号和特殊符号。确认无误后再重新请求API接口。

Q4 问:出现 405 不允许跨域请求 时怎么办?答:可以追加GET参数 &yesapi_allow_origin=1,或参考用反向代理解决跨域问题等3种解决方案。

Q4 问:在wx内无法访问yesapi.cn或okayapi.com域名,怎么办?答:由于曾经短链跳转使用被wx误封域名,可以帮忙进行申诉。申诉后截图联系我们,获取15万次接口流量奖励。