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

使用Delphi的TRESTClient上传图片至Imgur失败求助

Delphi调用Imgur API上传图片的问题修复

核心错误点

  • API资源路径错误:你使用的a/C11W7xC不是Imgur图片上传的正确API端点,正确的匿名上传端点是3/image。
  • 认证头格式错误:Imgur要求认证头为Authorization: Client-ID {你的Client ID},而非单独传递Client ID和Client Secret作为独立头参数(Client Secret在匿名上传场景不需要传入)。

修正后的代码

procedure TfrmMain.Button6Click(Sender: TObject);
var
  client: TRESTClient;
  request: TRESTRequest;
  response: TCustomRESTResponse;
begin
  client := TRESTClient.Create(nil);
  try
    client.BaseURL := 'https://api.imgur.com/';
    // 设置正确的认证头
    client.AddParameter('Authorization', 'Client-ID 你的ClientID', TRESTRequestParameterKind.pkHTTPHEADER);
    
    request := TRESTRequest.Create(nil);
    try
      request.Client := client;
      request.Method := rmPOST;
      // 使用正确的上传API端点
      request.Resource := '3/image';
      request.Accept := 'application/json';
      // 添加图片文件参数,确保参数名正确
      request.AddParameter('image', 'D:\linedw.jpg', pkFile);
      // 可选:添加标题、描述等参数
      // request.AddParameter('title', '我的图片', pkGETorPOST);
      // request.AddParameter('description', '测试上传', pkGETorPOST);
      
      request.Execute;
      response := request.Response;
      
      if response.Status.Success then
      begin
        mo_response.Lines.Add('上传成功:' + sLineBreak + response.Content);
        // 解析JSON获取图片链接,示例:
        // var jsonObj: TJSONObject;
        // jsonObj := TJSONObject.ParseJSONValue(response.Content) as TJSONObject;
        // if Assigned(jsonObj) then
        // try
        //   mo_response.Lines.Add('图片链接: ' + jsonObj.GetValue<TJSONObject>('data').GetValue<string>('link'));
        // finally
        //   jsonObj.Free;
        // end;
      end
      else
      begin
        mo_response.Lines.Add('上传失败: ' + response.StatusText + sLineBreak + response.Content);
      end;
    finally
      request.Free;
    end;
  finally
    client.Free;
  end;
end;

关键修改说明

  1. 认证头调整:将原来的两个独立头参数替换为符合Imgur要求的Authorization头,格式严格为Client-ID 你的ClientID,注意Client-ID和ID值之间有空格。
  2. API端点修正:使用3/image作为资源路径,这是Imgur官方指定的匿名图片上传端点。
  3. 可选参数扩展:代码中注释了标题、描述等可选参数,可根据需求启用。
  4. JSON解析示例:添加了解析返回结果获取图片链接的代码示例,方便直接拿到可用的图片URL。

注意事项

  • 确保你的Client ID已经在Imgur开发者平台正确创建,且没有被限制。
  • 若需要上传到指定相册或使用用户认证上传,才需要用到Client Secret获取访问令牌,匿名上传仅需Client ID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:46:12