使用阿里云视觉智能开放平台服务时,需要传入文件URL,视觉智能平台根据传入的文件URL对文件进行智能处理。本文介绍如何通过本地文件或网络文件链接生成URL。

背景信息

阿里云视觉智能开放平台服务的接口响应时间依赖文件的下载时间,为了保证被检测文件不会下载超时,建议您使用阿里云OSS存储文件。

说明 阿里云视觉智能开放平台视觉AI能力API接入、接口使用或问题咨询等,请通过钉钉群(23109592)加入阿里云视觉智能开放平台咨询群联系我们。

OSS用户

  1. 登录OSS管理控制台
  2. 创建存储空间
    创建Bucket选择区域时,需要选择与视觉智能开放平台对应服务能力相同的区域,当前视觉智能开放平台各服务支持的区域为华东2(上海)
    说明 如果您的OSS所在地域不是华东2(上海),请参见非上海地域OSS用户进行调用。
  3. 上传本地文件到OSS服务。
    具体操作请参见上传文件
  4. 查看文件URL。
    在已上传图片列表中,单击详情查看并复制图片URL。

非上海地域OSS用户

对于非OSS用户,或者您的OSS所属地域不是华东2(上海),推荐您使用SDK进行调用。

方式一(推荐方式)

使用各语言对应的新版SDK,目前新版SDK已经支持文件在本地或者非上海地域OSS文件,详情请参见各语言SDK参考。

方式二

如果您无法使用新版SDK,可使用viapiutils显式的生成URL,以下为各个语言对应的操作步骤。
重要

该方式使用阿里云视觉智能开放平台官方OSS-Bucket作为临时存储,仅为方便用户方便调试接口使用,文件存储有效期为1天。该方式非官方推荐方式,不保证SLA,该方式是所有用户共享总共1万QPS。如果在高峰时段,可能会因为过多用户使用OSS存储,而导致您调用接口失败。所以请勿在生产环境使用视觉智能开放平台官方的OSS-Bucket作为存储。此上传接口不推荐付费用户使用

例如,您购买了某个API 100QPS的使用服务,但如果仍使用免费OSS-Bucket,则仍将与其他用户共享总共1万QPS的OSS并发使用量,可能因OSS并发量受限,而无法使用到100QPS的调用量上限。

  • Java SDK

    请安装如下Java SDK包。

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>viapi-utils</artifactId>
      <version>1.0.2</version>
    </dependency>
    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>aliyun-java-sdk-viapiutils</artifactId>
      <version>1.0.0</version>
    </dependency>
    间接依赖,按需添加。
    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>aliyun-java-sdk-core</artifactId>
      <version>4.4.8</version>
    </dependency>
    <dependency>
      <groupId>com.aliyun.oss</groupId>
      <artifactId>aliyun-sdk-oss</artifactId>
      <version>3.4.2</version>
    </dependency>
    
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.9</version>
    </dependency>
    具体代码示例如下。
    import com.aliyun.com.viapi.FileUtils;
    
    public class FileUtilUpload {
    
        public static void main(String[] args) throws Exception {
            String accessKey = "xxx";    //您的AccessKeyID
            String accessKeySecret = "xxx";    //您的AccessKeySecret
            //String file = /home/admin/file/1.jpg;  //或者本地上传
            String file = "https://www.exampleFileUtl.com/file.jpeg";
            FileUtils fileUtils = FileUtils.getInstance(accessKey, accessKeySecret);
            String ossUrl = fileUtils.upload(file);
            System.out.println(ossUrl);
        }
    
    }
  • Python SDK
    请安装如下Python SDK 。要求Python3及以上环境。
    pip install oss2
    pip install aliyun-python-sdk-viapiutils
    pip install aliyun-python-sdk-core
    pip install viapi-utils
    代码示例如下。
    from viapi.fileutils import FileUtils
    file_utils = FileUtils("your own accessKey","your own accessSecret")
    oss_url = file_utils.get_oss_url("http://xxx.jpeg","jpeg",False)
    print(oss_url)
    oss_url = file_utils.get_oss_url("/home/xxx.mp4","mp4",True)
    print(oss_url)
  • Node.js SDK
    推荐使用NPM工具安装依赖包。
    npm install @alicloud/viapi-utils@^1.0.0 --save

    JavaScript代码示例如下。

    // This file is auto-generated, don't edit it
    const ViapiUtil = require('@alicloud/viapi-utils');
    // 您的AccessKeyID
    let accessKeyId = "accessKeyId";
    // 您的AccessKeySecret
    let accessKeySecret = "accessKeySecret";
    // 要上传的文件路径,url 或 filePath
    let fileUrl = "https://www.exampleFileUtl.com/file.jpeg";
    // 上传成功后,返回上传后的文件地址
    ViapiUtil.default.upload(accessKeyId, accessKeySecret, fileUrl)
        .then(function(fileLoadAddress) {
            console.log(fileLoadAddress);
        })
        .catch(function(err) {
            console.log(err);
        })
    TypeScript代码示例如下。
    // This file is auto-generated, don't edit it
    import ViapiUtil from '@alicloud/viapi-utils';
    
    
    export default class Client {
    
      static async main(): Promise<void> {
        // 您的AccessKeyID
        let accessKeyId: string = "accessKeyId";
        // 您的AccessKeySecret
        let accessKeySecret: string = "accessKeySecret";
        // 要上传的文件路径,url 或 filePath
        let fileUrl: string = "https://www.exampleFileUtl.com/file.jpeg";
        // 上传成功后,返回上传后的文件地址
        let fileLoadAddress: string = await ViapiUtil.upload(accessKeyId, accessKeySecret, fileUrl);
      }
    
    }
  • PHP SDK
    推荐使用composer工具安装依赖包。
    composer require alibabacloud/viapi-utils
    代码示例如下。
    <?php
    
    // This file is auto-generated, don't edit it. Thanks.
    namespace Alibabacloud\SDK;
    
    use AlibabaCloud\SDK\ViapiUtils\ViapiUtils;
    
    class Client {
    
        /**
         * @return void
         * @throws \Exception
         */
        public static function main(){
            // 您的AccessKeyID
            $accessKeyId = "accessKeyId";
            // 您的AccessKeySecret
            $accessKeySecret = "accessKeySecret";
            // 要上传的文件路径,url 或 filePath
            $fileUrl = "https://www.exampleFileUtl.com/file.jpeg";
            // 上传成功后,返回上传后的文件地址
            $fileLoadAddress = ViapiUtils::upload($accessKeyId, $accessKeySecret, $fileUrl);
        }
    }
  • Go SDK
    推荐使用Go工具安装依赖包。
    go get github.com/alibabacloud-go/viapi-utils/client:v1.0.0
    代码示例如下。
    // This file is auto-generated, don't edit it. Thanks.
    package main
    
    import (
      "fmt"
    
      "github.com/alibabacloud-go/tea/tea"
      viapiutil "github.com/alibabacloud-go/viapi-utils/client"
    )
    
    func main() {
      // 您的AccessKeyID
      accessKeyId := tea.String("accessKeyId")
      // 您的AccessKeySecret
      accessKeySecret := tea.String("accessKeySecret")
      // 要上传的文件路径,url 或 filePath
      fileUrl := tea.String("https://www.exampleFileUtl.com/file.jpeg")
      // 上传成功后,返回上传后的文件地址
      fileLoadAddress, _err := viapiutil.Upload(accessKeyId, accessKeySecret, fileUrl)
      if _err != nil {
        fmt.Println(_err)
      }
      fmt.Println(fileLoadAddress)
    }
  • .NET SDK
    推荐使用Nuget工具安装依赖包。
    dotnet add package AlibabaCloud.SDK.VIAPIUtils
    代码示例如下。
    using System;
    //dotnet add package AlibabaCloud.SDK.VIAPIUtils
    using AlibabaCloud.SDK.VIAPI.Utils;
    
    namespace viapitest
    {
        class Program
        {
            static void Main(string[] args)
            {
                string accessKeyId="accessKeyId";   // 您的AccessKeyID
                string accessSecret="accessKeySecret";   // 您的AccessKeySecret
                string imageUrl="https://www.exampleFileUtl.com/file.jpeg";  // 上传成功后,返回上传后的文件地址
                FileUtils fileobj=FileUtils.getInstance(accessKeyId,accessSecret);
                string result=fileobj.Upload(imageUrl);
                Console.WriteLine(result);
            }
        }
    }