You need to enable JavaScript to run this app.
文档中心
文档控制台
注册
veImageX

veImageX

复制全文
下载 pdf
Java SDK
上传资源
复制全文
下载 pdf
上传资源

阅读本文,您可以获取 Java SDK 上传资源的接口调用示例,实现快速开发。

调用说明

本文提供的接口调用示例均通过 AK 和 SK 初始化实例。

前提条件

调用接口前,请先完成 Java SDK 的安装及初始化操作。

注意事项

若服务内已经存在同名文件,且您开启了重名覆盖上传,则新上传文件在上传路径及文件名重复时将覆盖同名旧文件。若未开启重名覆盖上传,则新文件上传失败。

调用示例

本节为您介绍上传资源各方式的调用示例。

普通上传

您可以指定服务 ID 和上传文件,来获取上传成功的资源 URI。
该接口内部依次调用了 ApplyImageUploadCommitImageUpload 两个 OpenAPI 来实现完整文件上传能力。
接口调用示例如下所示。

package com.volcengine.example.imagex.v2;


import com.volcengine.model.request.ApplyImageUploadRequest;
import com.volcengine.model.response.CommitImageUploadResponse;
import com.volcengine.service.imagex.v2.ImagexService;


import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;


/**
 * 上传文件
 */
public class UploadImage {
    public static void main(String[] args) {
        // 默认 ImageX 实例为 `cn-north-1`,如果您想使用其他区域的实例,请使用 `ImageXServiceImpl.GetInstance(区域名)` 显式指定区域
        ImagexService service = ImagexService.getInstance();
        service.setAccessKey("ak");
        service.setSecretKey("sk");


        ApplyImageUploadRequest request = new ApplyImageUploadRequest();
        request.setServiceId("service id"); // 服务 ID
        // request.setUploadHost("upload host"); // 指定上传域名,域名格式参考 https://www.volcengine.com/docs/508/1537728
        // request.setOverwrite("False");
        try {
            // 读取文件
            List<byte[]> datas = new ArrayList<>();
            datas.add(Files.readAllBytes(Paths.get("image path 1")));
            datas.add(Files.readAllBytes(Paths.get("image path 2")));


            // 上传文件
            CommitImageUploadResponse response = service.uploadImages(request, datas);
            System.out.println(response);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

分片上传

对大于 20MB 的文件,您可以通过将文件数据分成多个分片(part)来同时分片上传,最后将所有上传的分片合并为一个文件并获取存储地址。每个分片固定为 20 MB,分片数量默认从 1 开始,最大为 10000。

说明

上传顺序不影响最终的合并分片操作。如果其中任意分片上传失败,可以重新进行上传且不影响其他分片。

package com.volcengine.example.imagex.v2;


import com.volcengine.model.request.ApplyImageUploadRequest;
import com.volcengine.model.response.CommitImageUploadResponse;
import com.volcengine.service.imagex.v2.ImagexService;
import lombok.SneakyThrows;


import java.io.File;
import java.io.InputStream;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;


/**
 * 上传文件
 */
public class UploadImageByStream {
    public static void main(String[] args) {
        // 默认 ImageX 实例为 `cn-north-1`,如果您想使用其他区域的实例,请使用 `ImageXServiceImpl.GetInstance(区域名)` 显式指定区域
        ImagexService service = ImagexService.getInstance();
        service.setAccessKey("ak");
        service.setSecretKey("sk");


        ApplyImageUploadRequest request = new ApplyImageUploadRequest();
        request.setServiceId("service id");
        // 服务 ID
//        request.setStoreKeys(new ArrayList<>());
        // request.setUploadHost("upload host");


        try {
            // 读取文件
            List<InputStream> files = new ArrayList<>();
            List<Long> sizeArr = new ArrayList<>();
            addFile(request, files, sizeArr, "key 1", "path 1");
            addFile(request, files, sizeArr, "key 2", "path 2");


            // 上传文件
            CommitImageUploadResponse response = service.uploadImages(request, files, sizeArr);
            System.out.println(response);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    @SneakyThrows
    private static void addFile(ApplyImageUploadRequest request, List<InputStream> files, List<Long> sizeArr, String storeKey, String filePath) {
        // 读取文件
        File file = new File(filePath);
        if (request.getStoreKeys() != null) {
            request.getStoreKeys().add(storeKey);
        }
        files.add(Files.newInputStream(file.toPath()));
        sizeArr.add(file.length());
    }
}
最近更新时间:2025.05.07 21:56:23
这个页面对您有帮助吗?
有用
有用
无用
无用