You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Java调用CURL POST请求上传图片至Google Cloud Storage

问题分析与解决方案

错误原因

你的Java代码调用cURL时,ProcessBuilder的参数处理存在多处错误,导致命令解析失败:

  • 参数拆分错误:ProcessBuilder要求每个命令选项和对应的值必须是独立字符串,不能将选项与值合并(比如"-X POST"要拆成"-X"和"POST")。
  • --data-binary格式错误:原cURL命令需要用@指定文件路径,你漏写了@符号,且将选项和路径合并成了一个参数。
  • Header参数处理错误:不需要手动添加双引号转义,ProcessBuilder会自动处理参数中的空格,直接将Header内容作为独立参数传递即可。

修正后的代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class GcsUpload {
    public static void main(String[] args) {
        String tokenAuth = "TOKEN_HERE";
        String filePath = "C:/DL API/vecteezy_isolated-tree-high-res_17219851_371.png";
        String bucketName = "YOUR_BUCKET_NAME"; // 替换为你的存储桶名称
        String objectName = "test.png";

        ProcessBuilder pb = new ProcessBuilder(
                "curl",
                "-X", "POST",
                "--data-binary", "@" + filePath,
                "-H", "Authorization: Bearer " + tokenAuth,
                "-H", "Content-Type: image/png",
                "https://storage.googleapis.com/upload/storage/v1/b/" + bucketName + "/o?uploadType=media&name=" + objectName
        );

        pb.redirectErrorStream(true);
        try {
            Process p = pb.start();
            // 正确读取cURL输出
            BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            int exitCode = p.waitFor();
            System.out.println("cURL执行退出码: " + exitCode);
        } catch (IOException | InterruptedException e) {
            System.err.println("错误: " + e.getMessage());
        }
    }
}

关键修正点说明

  • 将每个cURL选项与对应的值拆分为独立字符串参数,比如"-X"和"POST"、"-H"和"Authorization: Bearer " + tokenAuth。
  • 修复--data-binary参数,添加@符号指定文件路径:"--data-binary", "@" + filePath。
  • 替换代码中的YOUR_BUCKET_NAME为实际的存储桶名称。
  • 改进输出读取逻辑,用BufferedReader正确获取cURL的执行结果和错误信息。

内容的提问来源于stack exchange,提问作者JrmyQg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 00:00:33