delphi4arab منتديات دلفي للعرب
خلل في كود رفع tnethttpclient - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : خلل في كود رفع tnethttpclient (/showthread.php?tid=9803)



خلل في كود رفع tnethttpclient - invocker - 15-10-2018

السلام عليكم

استخدمت الكود اسفله في رفع ملف ولم ينجح عن طريق استخدام tnethttpclient  اما عن طريق idhttp فالرفع تمام

السؤال اين الخلل ؟

في الحقيقة حاولت معرفة السبب والتجربة عدة مرات وتبين لي * لا اعلم ان كان هو السبب الحقيقي * ان اضافة الملف عن طريق idmultipartformdata غير متوافقة مع tnethttpclient لذا حاولت قراءة الملف على شكل سترينغ وارساله عن طريق استخدام tstringlist  لكن لا فائدة ربما  الخلل في طريقة قراءة الملف ربما يقرا 255 محرف فقط  هذا الكود
كود :
var   Stringlist: TStringlist;   begin   if o.Execute then   begin   Stringlist := TStringlist.Create;   Stringlist.Add('file_1_=[ رفع الملفات ]');   Stringlist.Add(format('file_1_=%s', [tfile.ReadAllText(o.FileName)]));   Memo1.Text := NetHTTPClient.Post('https://up.top4top.net/', Stringlist).ContentAsString;   end;




RE: خلل في كود رفع tnethttpclient - invocker - 15-10-2018

هل يجرب احد عنده رجاءا ربما الخلل بسيط


RE: خلل في كود رفع tnethttpclient - Agmcz - 17-10-2018

هكذا يعمل بنجاح

PHP كود :
uses
 System
.Net.HttpClient,
 
System.Net.Mime;

procedure TForm1.Button1Click(Sender: TObject);
var
 
HTTPClient: THTTPClient;
 
Param: TMultipartFormData;
begin
 
if OpenDialog1.Execute then
 begin
   HTTPClient 
:= THTTPClient.Create;
 
  Param := TMultipartFormData.Create;
 
  try
 
    Param.AddFile('file_1_', OpenDialog1.FileName);
 
    Param.AddField('submitr', '[ رفع الملفات ]');
 
    Memo1.Text := HTTPClient.Post('https://up.top4top.net/index.php', Param).ContentAsString;
 
  finally
 
    Param.Free;
 
    HTTPClient.Free;
 
  end;
 
end;
end; 



RE: خلل في كود رفع tnethttpclient - invocker - 18-10-2018

بارك الله فيك


RE: خلل في كود رفع tnethttpclient - محمودد - 21-10-2018

(17-10-2018, 08:18 PM)Agmcz كتب : هكذا يعمل بنجاح

PHP كود :
uses
 System
.Net.HttpClient,
 
System.Net.Mime;

procedure TForm1.Button1Click(Sender: TObject);
var
 
HTTPClient: THTTPClient;
 
Param: TMultipartFormData;
begin
 
if OpenDialog1.Execute then
 begin
   HTTPClient 
:= THTTPClient.Create;
 
  Param := TMultipartFormData.Create;
 
  try
 
    Param.AddFile('file_1_', OpenDialog1.FileName);
 
    Param.AddField('submitr', '[ رفع الملفات ]');
 
    Memo1.Text := HTTPClient.Post('https://up.top4top.net/index.php', Param).ContentAsString;
 
  finally
 
    Param.Free;
 
    HTTPClient.Free;
 
  end;
 
end;
end; 

ممكن تحويل الكود للتعامل مع idhttp بدال httpclient


RE: خلل في كود رفع tnethttpclient - invocker - 23-10-2018

تفضل

كود :
uses     ...,  IdMultipartFormData, IdHTTP, IdSSLOpenSSL; procedure TForm1.Button1Click(Sender: TObject); Var IdHTTP1: TIdHTTP; Src: string; LHandler: TIdSSLIOHandlerSocketOpenSSL; lParam: TIdMultiPartFormDataStream; begin if OpenDialog1.Execute then   try     IdHTTP1 := TIdHTTP.Create(nil);     try       LHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);       try         lParam := TIdMultiPartFormDataStream.Create;         lParam.AddFile('file_1_', OpenDialog1.FileName);         lParam.AddFormField('submitr', '[ رفع الملفات ]');         IdHTTP1.IOHandler := LHandler;         Src := IdHTTP1.post('https://up.top4top.net', lParam);         Memo1.Text := Src;       finally         lParam.Free;         LHandler.Free;       end;     finally       IdHTTP1.Free;     end;   except     on E: Exception do       Writeln(E.ClassName, ': ', E.Message);   end; end;