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

如何通过Java代码发送携带图片文件的PUT请求上传至Blob存储?

问题原因及修复方案

现有代码核心错误点

  • 初始化请求时错误设置了ContentType.JSON,虽然后续覆写了Content-Type,但该冗余配置可能引发序列化逻辑异常
  • 构造请求参数后重复调用.given()方法,会重置之前已经配置的请求头、请求体等所有参数,导致实际发送的请求不符合预期
  • 自定义的convertImageToBinary方法如果存在编码或读取异常,会导致上传的二进制内容损坏,直接传入File对象由RestAssured处理二进制流更可靠

修复后代码

RestAssured.baseURI = "https://mediasa.blob.core.windows.net";
// 直接构造请求,移除多余的JSON类型配置
RequestSpecification request = RestAssured.given()
        .header("x-type", "internal")
        .header("Content-Type", "application/octet-stream")
        .header("x-ms-blob-type", "BlockBlob")
        // 直接传入File对象,不需要自行转换二进制
        .body(new File("image.jpeg"))
        .filter(new RequestLoggingFilter(requestCapture));
// 直接调用put方法,不要重复调用given()
Response response = request.put(sas);

额外验证点

  • 确认sas变量的取值是完整的Blob上传路径+SAS令牌,和Postman的curl请求目标地址一致
  • 确认图片文件的路径正确,代码运行时有权限读取该文件
  • 如果需要保留自行转换二进制的逻辑,确认convertImageToBinary方法返回的是原始字节数组byte[],不要做任何额外编码转换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:36:03