تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
كيف أصنع برنامج رفع ملفات لسرفر
#1
كيف أصنع برنامج رفع ملفات لسرفر مثل 0zz0
gulfup...
الرد }}}}
تم الشكر بواسطة:
#2
قمت بتوضيح ذلك بالكامل في مقالتي

[سلسلة التعامل مع الويب] - ارسال الطلبات HttpWebRequset

^ هناك جزئية كاملة تتحدث عن المطلوب (في المشاركة الثالثة)


لازلت اقول ياجماعة

اي خدمة تريد الحصول عليها من اي موقع استعمل الطلبااات (WEB REQUSET)
الرد }}}}
تم الشكر بواسطة:
#3
لكن أحتاج طرقة بال vb.net
الرد }}}}
تم الشكر بواسطة:
#4
elta كتب :لكن أحتاج طرقة بال vb.net

وله يهمك

استطيع كتابة الكلاس من جديد بالفيجوال بيسك

لكن المشكلة هل ستستطيع استخدام الكلاس ؟

لانك لازم تجيب بعض المعلومات من اداة Live http header
الرد }}}}
تم الشكر بواسطة:
#5
لا + لو يمكنك إعطائي سورس
لأتعلم منه
الرد }}}}
تم الشكر بواسطة:
#6
elta كتب :لا + لو يمكنك إعطائي سورس
لأتعلم منه


اممم


المشكلة ليست من السورس

المشكلة انك بتحتاج الى تطبيق الrequset لإستخراج المعلومات بواسطة live header وكتابة طلب

فلو اعطيتك السورس مابتستفيد لان بضل هناك شيئ ناقص في الموضوع

يعني بتقول هذا من وين جاب هذا الكلام وليش كتب جدي ؟؟!

وايضا من كل موقع لموقع تختلف المعطيات يعني لو عطيتك الطريقة على موقع gulfup

ورحت تجربها على 0xx0 مابتنفع

لازم تعطيها متغيرات اخرى عشان تقدر ترفع الى 0xx0


--

حبيبي هذي الامور انت لازم تتعلمها ماتصلح احد يعطيك الطريقة لأنها ستكون لشيئ واحد بس


انا فقط سأوفر لك الفئة المستعملة في الرفع لأي موقع محولة للفيجوال بيسك :

PHP كود :
'All Copyright to alshakiLLah
'
vb4arb
''' <summary>
''' 
ارفع ملفاتك لمراكز الرفع
''' </summary>
''' 
<remarks></remarks>
Public Class 
UploadStationPOST
    
Public Shared Function PostToStations(ByVal PostURL As StringByVal PostDataParameters As Dictionary(Of StringObject)) As String
        Dim boundary 
As String "---------------------------" DateTime.Now.Ticks.ToString("x")
        
Dim boundaryBytes As Byte() = System.Text.Encoding.ASCII.GetBytes((Convert.ToString(vbCr vbLf "--") & boundary) + vbCr vbLf)

        
Dim request As Net.HttpWebRequest DirectCast(Net.WebRequest.Create(PostURL), Net.HttpWebRequest)
        
request.ContentType Convert.ToString("multipart/form-data; boundary=") & boundary
        request
.Method "POST"
        
request.KeepAlive True
        request
.Credentials System.Net.CredentialCache.DefaultCredentials

        
If PostDataParameters IsNot Nothing AndAlso PostDataParameters.Count 0 Then

            Using requestStream 
As IO.Stream request.GetRequestStream()

                For 
Each pair As KeyValuePair(Of StringObjectIn PostDataParameters
                    requestStream
.Write(boundaryBytes0boundaryBytes.Length)
                    If 
TypeOf pair.Value Is FileDisposition Then
                        Dim file__1 
As FileDisposition DirectCast(pair.ValueFileDisposition)
                        
Dim header As String = (Convert.ToString((Convert.ToString("Content-Disposition: form-data; name=""" pair.Key """; filename=""") & file__1.Name) + """" vbCr vbLf "Content-Type: ") & file__1.ContentType) + vbCr vbLf vbCr vbLf
                        Dim bytes 
As Byte() = System.Text.Encoding.UTF8.GetBytes(header)
                        
'كتابة معلومات الملف
                        requestStream.Write(bytes, 0, bytes.Length)

                        Dim buffer As Byte() = New Byte(0) {}
                        '
تجهيز المصفوفة  
                        Dim bytesRead 
As Integer
                        
' كتابة بايتات الملف
                        Using fileStream As IO.FileStream = IO.File.OpenRead(file__1.FilePath)
                            While (InlineAssignHelper(bytesRead, fileStream.Read(buffer, 0, buffer.Length))) <> 0
                                requestStream.Write(buffer, 0, bytesRead)
                            End While
                            fileStream.Close()
                        End Using
                    Else
                        '
البارمترات الاخرى غير بارمتار فايلس
                        Dim data 
As String "Content-Disposition: form-data; name=""" pair.Key """" vbCr vbLf vbCr vbLf pair.Value
                        Dim bytes 
As Byte() = System.Text.Encoding.UTF8.GetBytes(data)
                        
requestStream.Write(bytes0bytes.Length)
                    
End If
                
Next
                Dim trailer 
As Byte() = System.Text.Encoding.ASCII.GetBytes((Convert.ToString(vbCr vbLf "--") & boundary) + "--" vbCr vbLf)
                
requestStream.Write(trailer0trailer.Length)
                
requestStream.Close()
            
End Using
        End 
If


        
'الرد
        Using response As Net.WebResponse = request.GetResponse()
            Using responseStream As IO.Stream = response.GetResponseStream()
                Using reader As New IO.StreamReader(responseStream, System.Text.Encoding.UTF8)
                    Return reader.ReadToEnd()
                End Using
            End Using
        End Using
    End Function


    Public Class FileDisposition
        Public Property Name() As String
            Get
                Return m_Name
            End Get
            Set(ByVal value As String)
                m_Name = Value
            End Set
        End Property
        Private m_Name As String

        Public Property ContentType() As String
            Get
                Return m_ContentType
            End Get
            Set(ByVal value As String)
                m_ContentType = Value
            End Set
        End Property
        Private m_ContentType As String

        Public Property FilePath() As String
            Get
                Return m_FilePath
            End Get
            Set(ByVal value As String)
                m_FilePath = Value
            End Set
        End Property
        Private m_FilePath As String
    End Class
    Private Shared Function InlineAssignHelper(Of T)(ByRef target As T, ByVal value As T) As T
        target = value
        Return value
    End Function

End Class 


اما طريقة الاستخدام (لموقع IraqUp فقط ولاتصلح لغيره)

PHP كود :
Dim postURL As String "http://www.iraqup.com/index2.php"
        'ResultButton.Enabled = false;
        Dim ext As String = System.IO.Path.GetExtension("Ahmed.jpg").ToLower()
        ext = ext.Remove(0, 1)
        If ext = "jpg" Then
            ext = "jpeg"
        End If
        '
on internet jpg is named jpeg
        Dim para 
As New Dictionary(Of StringObject)()
        
'para



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


        
'post
        Dim _result = UploadStationPOST.PostToStations(postURL, para) 


اذا كنت تريد الرفع لموقع اخر عليك بتغيير المعطيات في الكود اعلاه ،
والمعطيات تستطيع الحصول عليها من اداة Live http header
وقد شرح ذلك بالتفصيل في المقالة
الرد }}}}
تم الشكر بواسطة:
#7
شكرا أخي على الشرح
الرد }}}}
تم الشكر بواسطة:
#8
الشاكي لله كتب :


اممم


المشكلة ليست من السورس

المشكلة انك بتحتاج الى تطبيق الrequset لإستخراج المعلومات بواسطة live header وكتابة طلب

فلو اعطيتك السورس مابتستفيد لان بضل هناك شيئ ناقص في الموضوع

يعني بتقول هذا من وين جاب هذا الكلام وليش كتب جدي ؟؟!

وايضا من كل موقع لموقع تختلف المعطيات يعني لو عطيتك الطريقة على موقع gulfup

ورحت تجربها على 0xx0 مابتنفع

لازم تعطيها متغيرات اخرى عشان تقدر ترفع الى 0xx0


--

حبيبي هذي الامور انت لازم تتعلمها ماتصلح احد يعطيك الطريقة لأنها ستكون لشيئ واحد بس


انا فقط سأوفر لك الفئة المستعملة في الرفع لأي موقع محولة للفيجوال بيسك :

PHP كود :
'All Copyright to alshakiLLah
'
vb4arb
''' <summary>
''' 
ارفع ملفاتك لمراكز الرفع
''' </summary>
''' 
<remarks></remarks>
Public Class 
UploadStationPOST
    
Public Shared Function PostToStations(ByVal PostURL As StringByVal PostDataParameters As Dictionary(Of StringObject)) As String
        Dim boundary 
As String "---------------------------" DateTime.Now.Ticks.ToString("x")
        
Dim boundaryBytes As Byte() = System.Text.Encoding.ASCII.GetBytes((Convert.ToString(vbCr vbLf "--") & boundary) + vbCr vbLf)

        
Dim request As Net.HttpWebRequest DirectCast(Net.WebRequest.Create(PostURL), Net.HttpWebRequest)
        
request.ContentType Convert.ToString("multipart/form-data; boundary=") & boundary
        request
.Method "POST"
        
request.KeepAlive True
        request
.Credentials System.Net.CredentialCache.DefaultCredentials

        
If PostDataParameters IsNot Nothing AndAlso PostDataParameters.Count 0 Then

            Using requestStream 
As IO.Stream request.GetRequestStream()

                For 
Each pair As KeyValuePair(Of StringObjectIn PostDataParameters
                    requestStream
.Write(boundaryBytes0boundaryBytes.Length)
                    If 
TypeOf pair.Value Is FileDisposition Then
                        Dim file__1 
As FileDisposition DirectCast(pair.ValueFileDisposition)
                        
Dim header As String = (Convert.ToString((Convert.ToString("Content-Disposition: form-data; name=""" pair.Key """; filename=""") & file__1.Name) + """" vbCr vbLf "Content-Type: ") & file__1.ContentType) + vbCr vbLf vbCr vbLf
                        Dim bytes 
As Byte() = System.Text.Encoding.UTF8.GetBytes(header)
                        
'كتابة معلومات الملف
                        requestStream.Write(bytes, 0, bytes.Length)

                        Dim buffer As Byte() = New Byte(0) {}
                        '
تجهيز المصفوفة  
                        Dim bytesRead 
As Integer
                        
' كتابة بايتات الملف
                        Using fileStream As IO.FileStream = IO.File.OpenRead(file__1.FilePath)
                            While (InlineAssignHelper(bytesRead, fileStream.Read(buffer, 0, buffer.Length))) <> 0
                                requestStream.Write(buffer, 0, bytesRead)
                            End While
                            fileStream.Close()
                        End Using
                    Else
                        '
البارمترات الاخرى غير بارمتار فايلس
                        Dim data 
As String "Content-Disposition: form-data; name=""" pair.Key """" vbCr vbLf vbCr vbLf pair.Value
                        Dim bytes 
As Byte() = System.Text.Encoding.UTF8.GetBytes(data)
                        
requestStream.Write(bytes0bytes.Length)
                    
End If
                
Next
                Dim trailer 
As Byte() = System.Text.Encoding.ASCII.GetBytes((Convert.ToString(vbCr vbLf "--") & boundary) + "--" vbCr vbLf)
                
requestStream.Write(trailer0trailer.Length)
                
requestStream.Close()
            
End Using
        End 
If


        
'الرد
        Using response As Net.WebResponse = request.GetResponse()
            Using responseStream As IO.Stream = response.GetResponseStream()
                Using reader As New IO.StreamReader(responseStream, System.Text.Encoding.UTF8)
                    Return reader.ReadToEnd()
                End Using
            End Using
        End Using
    End Function


    Public Class FileDisposition
        Public Property Name() As String
            Get
                Return m_Name
            End Get
            Set(ByVal value As String)
                m_Name = Value
            End Set
        End Property
        Private m_Name As String

        Public Property ContentType() As String
            Get
                Return m_ContentType
            End Get
            Set(ByVal value As String)
                m_ContentType = Value
            End Set
        End Property
        Private m_ContentType As String

        Public Property FilePath() As String
            Get
                Return m_FilePath
            End Get
            Set(ByVal value As String)
                m_FilePath = Value
            End Set
        End Property
        Private m_FilePath As String
    End Class
    Private Shared Function InlineAssignHelper(Of T)(ByRef target As T, ByVal value As T) As T
        target = value
        Return value
    End Function

End Class 


اما طريقة الاستخدام (لموقع IraqUp فقط ولاتصلح لغيره)

PHP كود :
Dim postURL As String "http://www.iraqup.com/index2.php"
        'ResultButton.Enabled = false;
        Dim ext As String = System.IO.Path.GetExtension("Ahmed.jpg").ToLower()
        ext = ext.Remove(0, 1)
        If ext = "jpg" Then
            ext = "jpeg"
        End If
        '
on internet jpg is named jpeg
        Dim para 
As New Dictionary(Of StringObject)()
        
'para



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


        
'post
        Dim _result = UploadStationPOST.PostToStations(postURL, para) 


اذا كنت تريد الرفع لموقع اخر عليك بتغيير المعطيات في الكود اعلاه ،
والمعطيات تستطيع الحصول عليها من اداة Live http header
وقد شرح ذلك بالتفصيل في المقالة

ما شاء الله عليك، أنا استفدت منك يمكن اكثر من السائل.
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Thumbs Up برنامج إدارة الجمعيات الخيرية مفتوح المصدر... الرجاء المساعدة Arabia 44 1,376 أمس, 02:01 PM
آخر رد: tryold
  طريقة عمل قائمة خصائص شبية باالموجودةفي برنامج الفيجوال بيسك CLARO 1 58 07-12-16, 12:20 AM
آخر رد: amgad525
  نقل واسترجاع ملفات بواسطة الفيجوال بيسك عبدالرحمن المكاوي 25 522 05-12-16, 08:30 PM
آخر رد: عبدالرحمن المكاوي
  [سؤال] كيف اجعل برنامج يفتح ملف نصي The Light Fire 5 103 04-12-16, 12:37 AM
آخر رد: ali.alfoly
  [سؤال] ايهما افضل في قواعد البيانات للتميم برنامج sal.softip 2 49 03-12-16, 06:59 PM
آخر رد: sal.softip
  [سؤال] تشغيل ملفات الصوتية متتالية سوري حر 4 120 02-12-16, 07:18 AM
آخر رد: zinom
  مساعدة في عمل برنامج rabeh.ram 4 175 27-11-16, 12:29 AM
آخر رد: rabeh.ram
  [سؤال] مشاركة برنامج متصل بقاعدة بيانات sql على شبكه محلية mohammedbassim 3 85 24-11-16, 11:40 PM
آخر رد: mohammedbassim
  [VB.NET] حماية برنامج من سرقة السورس كود thevirus 1 68 20-11-16, 07:41 PM
آخر رد: محمود بكرى
  مساعدة فى برنامج ارسال رسائل sms للموبايل nabil.1710 2 86 13-11-16, 12:00 PM
آخر رد: أبوبكر سويدان

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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم