تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
[سلسلة التعامل مع الويب] - ارسال الطلبات HttpWebRequset
#3
[COLOR="#000000"]
[b]سابعا :- رفع الملفات لمراكز الرفع

[COLOR="#800000"]

في هذا الجزء راح نتكلم عن طريقة رفع ملف الى مراكز الرفع

حيث ان بيانات الطلب معقدة وتتطلب طريقة خاصة للتعامل

مارح اشرح كل جملة في هذا الجزء كما كنت افعل سابقا

بسبب ضيق الوقت + اعتقد صرتوا محترفين Big Grin + يجب عليي وضع المقالة القادمة اليوم
[/COLOR]
--

نبدأ ببركة الله


[COLOR="#000080"]كما قلنا نريد أن نرفع ملف الى مركز رفع

وليكن الملف عبارة عن صورة

الامثلة راح تكون على موقعين

الموقع الاول هو Iraqup لرفع الصور

ندخل عليه ونختار صورة .

- وقبل لاترفع ، لاتنسى تشغل قنص الطلبات في أداة Live http header لنتمكن من الحصول على الطلب[/COLOR]

-----

[COLOR="#000000"]بعد الرفع :




كما ترى الPost Data معقدة وليست كابقية الداتا الي تعامنا معاها سابقا

بالاضافة الى وجود -----------------------------176483200027146 ،

وهذا رقم يتغير في كل مرة ترفع فيها وماتقدر تخلي رقم عشوائي

لهذا قمت بعمل جزء خاص يتكلم عن الرفع للمراكز[/COLOR]


--
[COLOR="#8B4513"]
الفئة الذهبية لرفع الملفات للمراكز :[/COLOR]

PHP كود :
public class UploadStationPOST
    
{
        
//Copyright for ALshkiLLah
        /// <summary>
        /// Upload your data to upload stations.
        /// </summary>
        /// <param name="url">Post url</param>
        /// <param name="parameters">Post data parameters</param>
        /// <returns></returns>
        
public static string PostToStations(string PostURLDictionary<stringobjectPostDataParameters)
        {
            
string boundary "---------------------------" DateTime.Now.Ticks.ToString("x");
            
byte[] boundaryBytes System.Text.Encoding.ASCII.GetBytes("\r\n--" boundary "\r\n");

            
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(PostURL);
            
request.ContentType "multipart/form-data; boundary=" boundary;
            
request.Method "POST";
            
request.KeepAlive true;
            
request.Credentials System.Net.CredentialCache.DefaultCredentials;

            if (
PostDataParameters != null && PostDataParameters.Count 0)
            {

                
using (Stream requestStream request.GetRequestStream())
                {

                    foreach (
KeyValuePair<stringobjectpair in PostDataParameters)
                    {
                        
requestStream.Write(boundaryBytes0boundaryBytes.Length);
                        if (
pair.Value is FileDisposition)
                        {
                            
FileDisposition file = (FileDisposition)pair.Value;
                            
string header "Content-Disposition: form-data; name=\"" pair.Key "\"; filename=\"" file.Name "\"\r\nContent-Type: " file.ContentType "\r\n\r\n";
                            
byte[] bytes System.Text.Encoding.UTF8.GetBytes(header);
                            
//كتابة معلومات الملف
                            
requestStream.Write(bytes0bytes.Length);

                            
byte[] buffer = new byte[1]; //تجهيز المصفوفة  
                            
int bytesRead;
                            
// كتابة بايتات الملف
                            
using (FileStream fileStream File.OpenRead(file.FilePath))
                            {
                                while ((
bytesRead fileStream.Read(buffer0buffer.Length)) != 0)
                                {
                                    
requestStream.Write(buffer0bytesRead);
                                }
                                
fileStream.Close();
                            }
                        }
                        else
                        {
                            
//البارمترات الاخرى غير بارمتار فايلس
                            
string data "Content-Disposition: form-data; name=\"" pair.Key "\"\r\n\r\n" pair.Value;
                            
byte[] bytes System.Text.Encoding.UTF8.GetBytes(data);
                            
requestStream.Write(bytes0bytes.Length);
                        }
                    }
                    
byte[] trailer System.Text.Encoding.ASCII.GetBytes("\r\n--" boundary "--\r\n");
                    
requestStream.Write(trailer0trailer.Length);
                    
requestStream.Close();
                }
            }


            
//الرد
            
using (WebResponse response request.GetResponse())
            {
                
using (Stream responseStream response.GetResponseStream())
                {
                    
using (StreamReader reader = new StreamReader(responseStreamEncoding.UTF8))
                        return 
reader.ReadToEnd();
                }
            }
        }


        public class 
FileDisposition
        
{
            public 
string Name getset; }

            public 
string ContentType getset; }

            public 
string FilePath getset; }
        }

    } 

الان لكي نرفع ملف نحتاج لبيانات الطلب مرة اخرى
[COLOR="#FF0000"]
في النهاية الكود الكامل لرفع صورة لموقع iraqUp هو هذا[/COLOR]

PHP كود :
string postURL "http://www.iraqup.com/index2.php";
            
//ResultButton.Enabled = false;
            
string ext System.IO.Path.GetExtension(textBox1.Text).ToLower();
            
ext ext.Remove(0,1);
            if (
ext == "jpg"){ext="jpeg";} //on internet jpg is named jpeg

            
Dictionary<stringobjectpara = new Dictionary<stringobject>();
            
//para



            
para.Add("userfile", new UploadStationPOST.FileDisposition()
            {
                
Name "ali.png",  //اسم الصورة
                
ContentType "image" ext//صيغة الصورة
                
FilePath "c://ali.png" //مكان الصورة
            
});


            
//post
            
_result UploadStationPOST.PostToStations(postURLpara); 

[COLOR="#4B0082"]سيتم حفظ محتوى الرد في المتغير result وهو عبارة عن صفحة الصورة بعد ماانرفعت

البارمترات
Name : اسم الصورة
ContentType : صيغة الصورة
FilePath : مسار الصورة على جهازك[/COLOR]

صورة :



--


سنحاول الان الرفع على موقع اخر

وهو http://www.0zz0.com

ارفع ملف وشوف تنسيق بيانات الطلب





هناك 3 برامترات ، عكس الموقع السابق كان في برامتار واحد بس واسمه [COLOR="#FF0000"]userfile

اما هنا يوجد 3

فسنتظطر الى زيادة القاموس لنتمكن من الرفع له[/COLOR]

PHP كود :
string postURL "http://www.0zz0.com/index.php";
            
//ResultButton.Enabled = false;
            
string ext System.IO.Path.GetExtension(textBox1.Text).ToLower();
            
ext ext.Remove(0,1);
            if (
ext == "jpg"){ext="jpeg";} //on internet jpg is named jpeg

            
Dictionary<stringobjectpara = new Dictionary<stringobject>();
            
//para


            
para.Add("APC_UPLOAD_PROGRESS""83738829");//new para
            
para.Add("upload""ok");//new para
            
para.Add("file2up[]", new UploadStationPOST.FileDisposition()
            {
                
Name "ali.png",  //اسم الصورة
                
ContentType "image" ext//صيغة الصورة
                
FilePath "c://ali.png" //مكان الصورة
            
});


            
//post
            
_result UploadStationPOST.PostToStations(postURLpara); 


لاحظ قمنا بزيادة
PHP كود :
para.Add("APC_UPLOAD_PROGRESS""83738829");//new para
            
para.Add("upload""ok");//new para 
[COLOR="#006400"]
لأن في موقع iraqup كان يوجد Parameter واحد بس !!

اما في موفع العملاق يوجد Parameter ثلاثة[/COLOR]

لاحظ ايضا قمنا بتغير المفتاح الثالث من userfile الى file2up[]





---
---



المثال في المرفقات



---
---
---


{يتبع الجزء الثامن} >>>

[/COLOR]
[/b]


الملفات المرفقة
.zip   IraqUp.zip (الحجم : 70.93 ك ب / التحميلات : 103)
الرد }}}
تم الشكر بواسطة: السندبااد , أسامة


الردود في هذا الموضوع
[سلسلة التعامل مع الويب] - ارسال الطلبات HttpWebRequset - بواسطة الشاكي لله_mybb_import4784 - 06-08-13, 01:38 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سلسلة ادوات المبرمج] {1} - اداة مراقبة الريجستري RegFromApp الشاكي لله 2 5,478 15-09-24, 11:36 AM
آخر رد: بوحمد
  [سلسلة التحكم] {4} - التحكم عن بعد بواسطة خدمة الويب الشاكي لله 7 10,127 12-07-21, 02:34 PM
آخر رد: devante.celvin
  [سلسلة التحكم] {5} - التحكم بالمصباح بواسطة الـ USB و Arduino الشاكي لله 12 25,959 30-12-19, 01:38 AM
آخر رد: mohammed abdalsamed
  [سلسلة التحكم] {3} - خدمة الويب (Web Service) الشاكي لله 9 13,407 25-09-19, 05:47 PM
آخر رد: al9atl
  تجميعية مقالات [سلسلة التحكم] الشاكي لله 10 8,120 15-07-19, 09:14 AM
آخر رد: mrsalnet
  التعامل مع ملفات xml بلغتي C#&VB Sajad 7 14,617 08-11-17, 10:21 AM
آخر رد: nani49
  [C#.NET] سلسلة حلقات نضف كودك Devahmedsalim 1 2,900 10-10-17, 11:28 PM
آخر رد: nani49
  [سلسلة ادوات المبرمج] {2} - اداة تحليل صفحات الويب HAPXPathFinder الشاكي لله 10 9,076 30-08-17, 06:49 PM
آخر رد: ابو روضة
  [سلسلة التحكم] {2} - التحكم بواسطة Remoting الشاكي لله 8 10,963 06-12-16, 04:22 PM
آخر رد: الشاكي لله
  [سلسلة التعامل مع الويب] تحليل الصفحات باستخدام HtmlAgilityPack الشاكي لله 9 7,489 25-09-16, 12:19 PM
آخر رد: ابراهيم كركوكي

التنقل السريع :


يقوم بقرائة الموضوع: