delphi4arab منتديات دلفي للعرب

نسخة كاملة : post data with http
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم

ممكن مثال لارسال ملف الى موقع معين احتاج فقط طريقة قراءة الملف هل ارسله مباشرة ام عن طريق ستريم

الموقع هنا     https://uploadfiles.io/

الداتا على هذا الشكل
dzuuid=587ba150-2b82-43c8-aedf-a3f4cd9f763d&dzchunkindex=0&dztotalfilesize=90112&dzchunksize=26143000&dztotalchunkcount=1&dzchunkbyteoffset=0&file=happy.exe


ما احتاجه الكود الخاص بالسطر الاحمر الخاص بارسال الملف

المشكل
{"status":false,"error":"Please upload a file."}

PostData := TIdMultipartFormDataStream.Create;

حل للمشكلة الاولى


PostData.AddFile('file=', o.FileName );

الان رسالة الخطا
<pre>Bad Request: Unable to verify your data submission.</pre>

عرفت المشكلة الاخيرة في حفظ الكوكيز بعد التاكد
************c1**************
94839
************c1**************
3ba7c3e9e7323827aa716828632cc3ed

c1 الكوكيز الاول

c2 ليسو سواء لذلك يظهر الاخطا

الان المشكلة في حفظ الكوكيز

للاسف حتى بعد توحيد الكوكيز تظهر الرسالة

************firstcookies**************
25564
************firstcookies**************
4a03156828572948ba5ff0e1bac4936a
************firstcookies**************
e6d74d5e0a657d69b8af50da48c702d8acf4602df912f98f639967b22912bc74a:2:{i:0;s:5:"_csrf";i:1;s:32:"bawXWvBeZvN3djoAaCwMg3pJFEXwe6UV";}
************secondtcookies**************
25564
************secondtcookies**************
4a03156828572948ba5ff0e1bac4936a
************secondtcookies**************
e6d74d5e0a657d69b8af50da48c702d8acf4602df912f98f639967b22912bc74a:2:{i:0;s:5:"_csrf";i:1;s:32:"bawXWvBeZvN3djoAaCwMg3pJFEXwe6UV";}
*************s*************
<pre>Bad Request: Unable to verify your data submission.</pre>
السلام عليكم هل هناك حل او مثال لموقع هذا https://up.top4top.net/ او نظير له

لا اعرف اين الخلل هذا السورس ارجوا ان يعطينا احدكم الخلل في الكود

PHP كود :
procedure TForm2.Button1Click(Sender: TObject);
var
 
url,res:string;
 
filename:string;
 
sl:TStringList;
 
stream : TIdMultiPartFormDataStream;
begin
 stream 
:= TIdMultiPartFormDataStream.create();
 
filename:='C:\Users\invoc\Desktop\fr.png';

 
http.CustomHeaders['ContentType'] := 'multipart/form-data';
//  file_1_=Sans titre.png,&file_2_=,&file_3_=,&file_4_=,&file_5_=,&file_6_=,&file_7_=,&file_8_=,&file_9_=,&file_10_=,&submitr=[ رفع الملفات ]
 
 stream.AddFile('file_1_',filename);
 
stream.AddFormField('submitr','[ رفع الملفات ]');
 
 url := 'https://up.top4top.net/index.php';

 
res:=http.post(url,stream).ContentAsString(TEncoding.UTF8);
 
memo1.Lines.Add(res);
 
stream.Free;

end; 
السلام عليكم جرب اعادة الـ Stream الى البداية Seek(0, 0)
بارك الله فيك على الرد نفس المشكل stream.Seek(0,0);
اضفت كذلك sid كبراميتر في البداية لكن نفس المشكل
stream.AddFormField('sid',c.value);


لانه احيانا يكون الباراميتر على هذا النحو
sid & filename & submit
طيب هل يوجد مثال لاي موقع رفع
(09-10-2018, 01:40 PM)invocker كتب : [ -> ]طيب هل يوجد مثال لاي موقع رفع

تفضل
http://delphi4arab.net/forum/showthread.php?tid=9566


كود :
  function UploadFile(Sfile:string):string; { const BaseUrl ='http://127.0.0.1/UploadFilesBasic'; userName = 'admin' ; apikey = 'fnp9b3tndVh1dHB9dDlxfH0'  ;   } var     Params: TIdMultipartFormDataStream; begin BaseUrl := form1.Edit1.Text; userName := form1.Edit2.Text ; apikey := form1.Edit3.Text  ; form1.Cursor:=crHourGlass; form1.Label1.Caption := ''; try Params:=TIdMultiPartFormDataStream.Create; //Params.AddFile('uploadfile',Sfile,'multipart/form-data');    with Params.AddFile('uploadfile',Sfile,'multipart/form-data') do   begin     HeaderEncoding := '8';     HeaderCharSet := 'UTF-8';   end; Params.AddFormField('passwordfile',form1.Edit4.Text, 'utf-8').ContentTransfer := '8bit'; Params.AddFormField('ispublic',IntToStr(Integer(form1.CheckBox1.Checked))); form1.IdHTTP1.Request.CustomHeaders.Clear; form1.IdHTTP1.Request.UserAgent:='Mozilla/5.0 (Windows NT 6.1; rv:54.0) Gecko/20100101 Firefox/54.0'; form1.IdHTTP1.Request.CustomHeaders.Add('X-Requested-With: XMLHttpRequest'); //form1.IdHTTP1.Request.CustomHeaders.Add('X-File-Name: '+extractfilename(Sfile)); Form1.IdHTTP1.Request.ContentType:='application/json' ; Form1.IdHTTP1.Request.ContentEncoding := 'UTF-8'; Form1.IdHTTP1.Request.CustomHeaders.Add('Vary: Accept-Encoding'); try result:=form1.Idhttp1.post(BaseUrl+'/ajax/index.php?uploadfile&api='+apikey+'=&username='+userName,Params); except  result:='{"success":false,"msg":"Server not responding"}';  //on E : Exception do ShowMessage(E.ClassName+' error raised, with message : '+E.Message); end; Finally   Params.Free  ;   form1.Cursor:=crDefault; end; end;
بارك الله فيك استاذ onexite رايته من قبل واظن ان الموقع من برمجتك هل ممكن تجرب على موقع https://up.top4top.net/ وتعطيني السبب لاني سابقا برمجت على نفس الموقع وكان شغال لا ادري ما الاضافة التي تمت على الموقع اريدك ان تجرب فقط ربما تكتشف خطا عندي او اضافة في الموقع
جرب مع المواقع التي توفر API
مثل:

https://www.file.io

https://app.smartfile.com/api

مثال بالفري باسكال (Lazarus) واستعمال الموقع file.io

غير File.txt

PHP كود :
program project1;

uses
  Classes
, fphttpclient;

var
  Respo: TStringStream;
  S: string;

begin
  with TFPHttpClient
.Create(nil) do
    try
      Respo := TStringStream.Create('');
      SimpleFileFormPost('https://file.io', 'file', 'File.txt', Respo);
      s := Respo.DataString;
      writeln(s);
      Respo.Destroy;
    finally
      Free;
    end;
end. 

النتيجة (الرد) في حالة النجاح

كود :
{"success":true,"key":"LJ07q1","link":"https://file.io/LJ07q1","expiry":"14 days"}
بارك الله فيك لم اجرب لان الوحدة TFPHttpClient غير متوفرة عندي على الدلفي ثانيا الرد
{"success":true,"key":"LJ07q1","link":"https://file.io/LJ07q1","expiry":"14 days"}
موجود في الصفحة بدون رفع اي شيء لذا لا اظن اننا نستطيع اعتماده لمعرفة نجاح الرفع

لو تجرب بالفري باسكال على الموقع اعلاه بالاعتماد على هذه الوحدة اكون شاكر جدا
(10-10-2018, 12:53 PM)invocker كتب : [ -> ]بارك الله فيك  لم اجرب لان الوحدة  TFPHttpClient غير متوفرة عندي على الدلفي   ثانيا  الرد
{"success":true,"key":"LJ07q1","link":"https://file.io/LJ07q1","expiry":"14 days"}
موجود في الصفحة بدون رفع اي شيء لذا لا اظن اننا نستطيع اعتماده لمعرفة نجاح الرفع

لو تجرب بالفري باسكال على الموقع اعلاه بالاعتماد على هذه الوحدة  اكون شاكر جدا

لا أظن أنه موجود في الصفحة لأنه يحتوي على رابط الملف على السرفر (بالتجربة)، وهو الرد المنتظر حسب شرح API على الموقع.

________________________________________

بالنسبة للرابط الأول جرب (https://up.uploadfiles.io/upload) بدلا من (https://uploadfiles.io)

بـ Lazarus التجربة ناجحة (متأكد)

PHP كود :
program project1;

uses
  Classes
, fphttpclient;

var
  Respo: TStringStream;
  S: string;

begin
  with TFPHttpClient
.Create(nil) do
    try
      Respo := TStringStream.Create('');
      SimpleFileFormPost('https://up.uploadfiles.io/upload', 'file', 'File.txt', Respo);
      s := Respo.DataString;
      writeln(s);
      Respo.Destroy;
    finally
      Free;
    end;
end. 

الرد

كود :
{"status":true,"id":2866885,"url":"https:\/\/ufile.io\/na1ud","destination":"https:\/\/uploadfiles.io\/na1ud","name":"File.txt","filename":"na1ud-file.txt","slug":"na1ud","size":"1.5 KB","type":"doc","expiry":"4 Weeks","session_id":"7acf4c3b01ab66cd93704e369685915276365ab8","timing":"1539186107-1539186107"}

بالنسبة لموقع https://up.top4top.net
بدلفي طوكيو تجربة ناجحة (متأكد)


PHP كود :
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; 


النتيجة ملف HTML مما يحتويه (ابتداء من السطر 92)
-----------------------------------------------------------------------------------------------------------------------------------
<!-- START  FOR INFORMATION -->
<div class="alert alert-warning" role="alert">
<ul class="index_info">
<li>تعليمات :
<span> تم تحميل الصورة بنجاح<br/><div class="thumb_div_tag"><a onclick="window.open(this.href,'_blank');return false;" href="https://d.top4top.net/p_1013j4qad1.jpg"><img src="https://d.top4top.net/s_1013j4qad1.jpg" alt="" class="thumb_img_tag" /></a></div><div class="clr"></div><table width="100%"><tr><td style="vertical-align: middle;"><div class="inputbody"><p class="btitle">رابط المصغرة</p><input readonly="readonly" class="all_boxes" onclick="this.select();" type="text" value="[صورة: s_1013j4qad1.jpg]" /></div><div class="clr"></div><div class="inputbody"><p class="btitle">رابط للمنتديات</p><input readonly="readonly" class="all_boxes" onclick="this.select();" type="text" value="[صورة: p_1013j4qad1.jpg]" /></div><div class="clr"></div><div class="inputbody"><p class="btitle">رابط الصورة المباشر</p><input readonly="readonly" class="all_boxes" onclick="this.select();" type="text" value="https://d.top4top.net/p_1013j4qad1.jpg" /></div><div class="clr"></div><div class="inputbody"><p class="btitle">رابط الحذف</p><input readonly="readonly" class="all_boxes" onclick="this.select();" type="text" value="https://up.top4top.net/delc1d0c4ffd9c7edeeb51e0ed84ef5465d.html" /></div><div class="clr"></div><br /><td width="177px" style="vertical-align:middle;"><div class="qr_img"><img src="qrcoder.php?qr=https://d.top4top.net/p_1013j4qad1.jpg" width="175" height="175" title="الرابط المباشر للمسح عن طريق الجوال" /></div></td></tr></table> </span>
</li>
</ul>
</div>
<div class="clr"></div>
<!-- END  FOR INFORMATION -->
-----------------------------------------------------------------------------------------------------------------------------------
الصفحات : 1 2