المشاركات : 141
المواضيع 45
:
: 317
الإنتساب : Aug 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;
المشاركات : 141
المواضيع 45
:
: 317
الإنتساب : Aug 2018
هل يجرب احد عنده رجاءا ربما الخلل بسيط
المشاركات : 654
المواضيع 34
:
: 106
الإنتساب : Aug 2010
17-10-2018, 08:18 PM
(آخر تعديل لهذه المشاركة: 17-10-2018, 11:43 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;
سبحان الله وبحمده سبحان الله العظيم
المشاركات : 141
المواضيع 45
:
: 317
الإنتساب : Aug 2018
المشاركات : 54
المواضيع 17
:
: 26
الإنتساب : Jun 2017
(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
كل من 1 user says قال شكرا ل محمودد على المشاركة المفيدة1 user says Thank You to محمودد for this post
• invocker
المشاركات : 141
المواضيع 45
:
: 317
الإنتساب : Aug 2018
23-10-2018, 05:54 PM
(آخر تعديل لهذه المشاركة: 23-10-2018, 10:14 PM بواسطة Agmcz.)
تفضل
كود :
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;