开发者社区 问答 正文

宜搭如何使用接口存储图片?

目前有一张网络上的图片(url)有时效性(2个小时)
怎么把这张图片上传到宜搭云存储里呢?

展开
收起
Godzilla2020 2025-07-09 10:54:44 202 分享 版权
来自: 钉钉宜搭
1 条回答
写回答
取消 提交回答
  • 月移花影,暗香浮动

    要将网络上的时效性图片(URL有效期为2小时)上传到宜搭云存储,请按照以下步骤操作:

    核心步骤:

    1. 下载图片:在URL失效前(2小时内)获取图片内容
    2. 调用宜搭API:使用宜搭开放平台的文件上传接口

    详细操作流程(Python示例):

    import requests
    import time
    
    # 配置参数
    IMAGE_URL = "https://example.com/your-image.jpg"  # 替换为你的图片URL
    APP_KEY = "你的宜搭应用AppKey"                    # 宜搭开放平台获取
    APP_SECRET = "你的宜搭应用AppSecret"              # 宜搭开放平台获取
    CORP_ID = "你的企业CorpId"                       # 钉钉企业ID
    APP_TYPE = "com.dingtalk.xxxxx"                  # 宜搭应用标识符
    
    # 1. 下载网络图片
    def download_image(url):
        response = requests.get(url)
        if response.status_code == 200:
            return response.content
        raise Exception("图片下载失败")
    
    # 2. 获取宜搭访问令牌
    def get_access_token():
        url = f"https://oapi.dingtalk.com/gettoken?appkey={APP_KEY}&appsecret={APP_SECRET}"
        response = requests.get(url)
        return response.json()["access_token"]
    
    # 3. 上传到宜搭云存储
    def upload_to_yida(file_data, file_name):
        access_token = get_access_token()
        url = "https://api.dingtalk.com/v1.0/yida/files/upload"
    
        headers = {
            "x-acs-dingtalk-access-token": access_token
        }
    
        params = {
            "corpId": CORP_ID,
            "appType": APP_TYPE,
            "fileName": file_name
        }
    
        files = {'file': (file_name, file_data)}
    
        response = requests.post(url, headers=headers, params=params, files=files)
        return response.json()
    
    # 执行上传
    try:
        # 生成唯一文件名(防止重复)
        file_name = f"image_{int(time.time())}.jpg"
    
        # 获取图片二进制数据
        image_data = download_image(IMAGE_URL)
    
        # 上传到宜搭
        result = upload_to_yida(image_data, file_name)
    
        print("上传成功!文件信息:")
        print(f"文件ID: {result['fileId']}")
        print(f"下载链接: {result['downloadUrl']}")
    except Exception as e:
        print(f"上传失败: {str(e)}")
    

    关键说明:

    1. 时效性处理

      • 脚本必须在URL失效前(2小时内)执行
      • 建议在获取URL后立即运行脚本
    2. 宜搭参数获取

      • APP_KEY/APP_SECRET:宜搭开放平台 > 应用开发 > 应用凭证
      • CORP_ID:钉钉企业管理后台 > 企业信息
      • APP_TYPE:宜搭应用编辑页URL中的参数(如:https://yida.dingtalk.com/app/APP_TYPE/home
    3. 返回结果

      • 成功上传后会返回fileIddownloadUrl
      • 在宜搭表单中可通过fileId引用该文件

    注意事项:

    1. 确保服务器能访问图片URL和宜搭API
    2. 大文件建议分块上传(宜搭单文件上限50MB)
    3. 生产环境需添加错误重试机制
    4. 敏感信息(AppSecret等)应使用环境变量存储

    宜搭官方文档参考:文件上传接口

    2025-07-09 16:45:31
    赞同 149 展开评论
问答分类:
问答地址:
关联地址: