2011-07-31 34 views
4

到ImageShack的我有API密鑰和閱讀他們的網站上稀疏文件,但還是遇到了麻煩這使工作,如果任何人有他們能夠分享那麼任何例子都將是巨大的。我不需要擔心視頻或任何幻想,只是一個簡單的上傳與返回的信息將滿足我的需求。上傳圖片用delphi

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; 

Thx。 凱文

+1

你應該提供一個代碼,「不工作」之前有人會盡力幫助你... – ComputerSaysNo

+0

代碼... >>> http://pastebin.com/sRFj3u7z <<< .. 。代碼 –

+2

你是不是在你的代碼發送「實際」的形象,請閱讀http://forums2.atozed.com/viewtopic.php?f=7&t=14992開局的評論,它應該幫助你實現你所需要的,如果你有麻煩,那麼請張貼代碼並指出問題。同時,瞭解你的Delphi的版本(即7,2009年,2010年,XE等)和印地應該幫助我們,甚至更多。 – ComputerSaysNo

回答

1

我幾乎做了同樣的事情去年黑夜。 Thx tho。

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; 
+0

注意,Indy以這種方式公開了到服務器的絕對文件路徑。 –

+1

@daemon_x,啊,我太遲了:-(我也進入了Indy的選擇。 –

+0

最重要的遺蹟;答案如何將文件上傳到ImageShack :) – 2011-07-31 20:55:44