看了钉钉开发平台上的上传媒体图片,我想要实现前端直接上传到钉钉并获取image_id,有没有相关范例,我的代码实现不了,有没有大神帮忙修改一下.
<?php
require("../api/Auth.php");
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="../easyui/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../easyui/themes/icon.css">
<link rel="stylesheet" type="text/css" href="../easyui/demo/demo.css">
<script type="text/javascript" src="../easyui/jquery.min.js"></script>
<script type="text/javascript" src="../easyui/jquery.easyui.min.js"></script>
<script type="text/javascript" src="../easyui/locale/easyui-lang-zh_CN.js"></script>
</head>
<body>
<form id ='ff' class='easyui-form' method="post" >
<label for="file">Filename:</label>
<input name="midia" id="midia" class="easyui-filebox" />
<input name="access_token" id ="access_token" type="text">
<input name="type" id ="type" type="text">
<br />
<input type="submit" name="submit" value="Submit" />
</form>
<script type="text/javascript">
$token='<?php echo Auth::getAccessToken()?>';
document.getElementById("access_token").setAttribute("value",$token);
document.getElementById("type").setAttribute("value","image");
$('#ff').form({
url:'https://oapi.dingtalk.com/media/upload?access_token=<?php echo Auth::getAccessToken();?>&type=image',
onSubmit:function(param)
{
},
success:function(data)
{
var Objdata =JSON.parse(data);
alert(Objdata.media_id);
},
error:function(data)
{
var Objdata =JSON.parse(data);
alert(Objdata.errcode);
}
});
</script>
</body>
</html>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
要实现在前端直接上传图片到钉钉并获取image_id
,你需要结合钉钉开放平台的API和前端技术(如JavaScript)来完成。这里提供一个简化的实现思路和示例代码片段。
后端生成access_token:首先,你的后端需要使用钉钉的企业内部应用凭证(appkey和appsecret)调用钉钉接口获取access_token。这一步看起来你已经在Auth.php
中处理了。
前端上传图片至钉钉:利用这个access_token,前端可以调用钉钉的媒体上传API直接上传图片,并在成功后获取到image_id
。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>钉钉图片上传示例</title>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<body>
<input type="file" id="imageFile" accept="image/*">
<button onclick="uploadImage()">上传图片</button>
<script>
async function uploadImage() {
const file = document.getElementById('imageFile').files[0];
if (!file) {
alert('请选择图片');
return;
}
// 这里假设后端已经提供了获取access_token的接口,并且返回格式为JSON: { "access_token": "your_access_token_here" }
const accessTokenResponse = await axios.get('/api/getAccessToken.php');
const accessToken = accessTokenResponse.data.access_token;
const formData = new FormData();
formData.append('media', file);
formData.append('type', 'image');
try {
const response = await axios.post(`https://oapi.dingtalk.com/media/upload?access_token=${accessToken}`, formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
});
if (response.data.errcode === 0) {
console.log('图片上传成功,image_id:', response.data.media_id);
} else {
console.error('图片上传失败:', response.data.errmsg);
}
} catch (error) {
console.error('请求错误:', error);
}
}
</script>
</body>
</html>
/api/getAccessToken.php
路径是一个假设的后端接口地址,请根据实际情况调整。your_access_token_here
为实际从后端获取到的access_token。