使用delphi将图像上传到ima​​geshack

Posted

技术标签:

【中文标题】使用delphi将图像上传到ima​​geshack【英文标题】:Upload image to imageshack with delphi 【发布时间】:2011-07-31 05:41:25 【问题描述】:

我有 API 密钥并阅读了他们网站上的稀疏文档,但仍然无法使其正常工作,因此如果有人有任何示例可以分享,那就太好了。我不需要担心视频或任何花哨的东西,只需简单的上传返回信息即可满足我的需求。

uses IdHttp;

function PostData:string;
var
    url: string;
    text: string;
    http: TIDHttp;
    valid: boolean;
    param: TStringList;
begin
    http := TIDHttp.Create(nil);
    http.HandleRedirects := true;
    http.ReadTimeout := 5000;
    param := TStringList.create;
    param.Clear;
    param.Add('fileupload=c:\image.png');
    param.Add('key=MY_API_KEY');
    param.Add('tags=tag1,tag2');
    valid := true;
    url := 'http://www.imageshack.us/upload_api.php';

    try
        text := http.Post(url, param);
    except
        valid := false;
    end;

    if valid then
        PostData := text
    else
        PostData := '';
end;

谢谢。 凯文

【问题讨论】:

在有人尝试帮助您之前,您应该提供“不起作用”的代码... 代码...>>> pastebin.com/sRFj3u7z 您的代码中没有发送“实际”图像,请阅读forums2.atozed.com/viewtopic.php?f=7&t=14992 gambit的评论,它应该可以帮助您实现您的需求,如果您遇到问题,请发布代码并指出问题。此外,了解您的 Delphi 版本(即 7、2009、2010、XE 等)和 Indy 应该对我们有更多帮助。 【参考方案1】:

昨晚我几乎做了同样的事情。谢谢。

procedure TForm1.Button1Click(Sender: TObject);
var
  MPData: TIdMultiPartFormDataStream;
  sResponse: string;
begin
  MPData := TIdMultiPartFormDataStream.Create;
  MPData.AddFile('fileupload','c:\image.png','image/png');
  MPData.AddFormField('tags','testfile,flyasia');
  MPData.AddFormField('public','no');
  MPData.AddFormField('key','API_KEY_HERE');
  sResponse := IdHTTP1.Post('http://www.imageshack.us/upload_api.php', MPData);
  MPData.Free;

  Memo1.Text := sResponse;
end;

【讨论】:

注意,Indy 以这种方式公开了服务器的绝对文件路径。 @daemon_x,啊,我来晚了 :-( 我也喜欢 Indy 替代品。 最重要的遗体;答案如何将文件上传到 ImageShack :)

以上是关于使用delphi将图像上传到ima​​geshack的主要内容,如果未能解决你的问题,请参考以下文章

delphi 怎么做一个上传图片

AFNetworking 多文件上传

在delphi上使用WININET上传文件

跪求Delphi+Mysql上传、下载图片的方法?

在 iOS 中生成 TIFF

将Android应用程序(在Delphi FireMonkey中开发)部署到Google Play商店