(17-11-18, 03:00 PM)elgokr كتب : [ -> ]الشكر لله والحمد لله
ونحمد الله على كل حال
تحياتى لك
وتمنياتى لك التوفيق
اخي جوكر انا طورت الكود واستبدلت خاصية اختيار الملف او الصوره المراد رفعها عن طريق open file dialog الى السحب والافلات
ونجح كود السحب والافلام وضهر المسار في textbox ولاكن كيف نستبدل الاوبن فايل ديلوق ب السحب والافلات
حاولت استبدل الوبين فايل ديلوق عن طريق الكود التالي
كود :
dlgOpen.FileName = txtFile.Text
ولم ينجح لان وضيفة الاوبين تحديد المراد رفعه
(19-11-18, 01:03 AM)trakktour كتب : [ -> ] (09-11-18, 10:25 PM)dasktop كتب : [ -> ]مرحبا
هل يوجد طريقة لتعامل مع مراكز رفع ملفات مثل تحميل صوره الى مركز رفع وجلب الرابط
جلب الرابط بسيط لاكن التعامل مع الرفع كيف يكون
مرحبا اخي
تفضل جرب هذا الكود
كود :
Public Sub New()
InitializeComponent()
Control.CheckForIllegalCrossThreadCalls = False
End Sub
Dim ClientId As String = "66665db7b4b0608"
Dim Dictionner As New Dictionary(Of WebClient, ListViewItem)
Private Sub Completed(sender As Object, e As UploadValuesCompletedEventArgs)
Dim Result As String = (New UTF8Encoding).GetString(e.Result)
If e.Cancelled = True Then
lvfiles.Items(Dictionner.Item(sender).Index).SubItems(1).ForeColor = Color.RoyalBlue
lvfiles.Items(Dictionner.Item(sender).Index).SubItems(1).Text = "Cancelled"
ElseIf e.Error IsNot Nothing Then
lvfiles.Items(Dictionner.Item(sender).Index).SubItems(1).ForeColor = Color.Red
lvfiles.Items(Dictionner.Item(sender).Index).SubItems(1).Text = "Error"
ElseIf e.Result IsNot Nothing Then
Dim K As Match = Regex.Match(Result, ",""link"":""(.*?)""}")
lvfiles.Items(Dictionner.Item(sender).Index).ToolTipText = K.Groups(1).Value.Replace("\", "")
lvfiles.Items(Dictionner.Item(sender).Index).SubItems(1).ForeColor = Color.Green
lvfiles.Items(Dictionner.Item(sender).Index).SubItems(1).Text = "Sucessfully, Uploaded"
End If
End Sub
Private Sub Progress(sender As Object, e As UploadProgressChangedEventArgs)
On Error Resume Next
lvfiles.Items(Dictionner.Item(sender).Index).SubItems(1).ForeColor = Color.Blue
lvfiles.Items(Dictionner.Item(sender).Index).SubItems(1).Text = e.ProgressPercentage & "%"
End Sub
Private Sub lvfiles_DoubleClick(sender As Object, e As EventArgs) Handles lvfiles.DoubleClick
If Not lvfiles.FocusedItem.SubItems(1).ForeColor = Color.Green Then : Exit Sub : End If
Clipboard.SetText(lvfiles.FocusedItem.ToolTipText, TextDataFormat.Text)
MsgBox("Link Copied", MsgBoxStyle.Information)
End Sub
Private Sub lvfiles_DragDrop(sender As Object, e As DragEventArgs) Handles lvfiles.DragDrop
Try
Dim FilePath As String = e.Data.GetData(DataFormats.FileDrop)(0)
Dim NIcon As Icon = Icon.ExtractAssociatedIcon(FilePath)
ImageList1.Images.Add(NIcon)
Dim itm As New ListViewItem
itm.UseItemStyleForSubItems = False
itm.Text = Path.GetFileName(FilePath)
itm.SubItems.Add("Uploading...").ForeColor = ColorTranslator.FromHtml("#3b4451")
itm.ImageIndex = ImageList1.Images.Count - 1
lvfiles.Items.Add(itm)
Dim w As New WebClient()
w.Headers.Add("Authorization", "Client-ID " & ClientId)
AddHandler w.UploadValuesCompleted, AddressOf Completed
AddHandler w.UploadProgressChanged, AddressOf Progress
Dim Keys As New System.Collections.Specialized.NameValueCollection
Keys.Add("image", Convert.ToBase64String(File.ReadAllBytes(FilePath)))
w.UploadValuesAsync(New Uri("https://api.imgur.com/3/image"), Keys)
Dictionner.Add(w, itm)
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub lvfiles_DragEnter(sender As Object, e As DragEventArgs) Handles lvfiles.DragEnter
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
e.Effect = DragDropEffects.All
End If
End Sub
اخي انا عندي جميع الاكواد جاهزه فقط ولاكن اريد ان استبدل طريقة اختيار الملف يعني مثلا ساارفع صوره الى موقع بضغط على زر واحدد الملف
انا اريد ان بدال من الضغط على زر وتحديد الملف فقط اسحب الملف واضعه على الزر فقط لدي كود السحب ولاكن كيف استبدل كود open file dialog بكون السحب
ارفق المشروع لديك
بعد اتمامك لاضافة ما تم اضافته فى المشروع
حتى اقوم بتعديل اللازم واختبار سينجح الامر ام لا
لان الامر كله فى الكود بالاعلى ليس اداء OpenFileDialog
انما هو عبارة عن تنفيذ كلك على ID فى كود المتصفح ليقوم بتنفيذ ضغطة على Input
موجود فى موقع مركز الرفع
تحياتى لك
وتمنياتى لك التوفيق
لاتمام عمل المطلوب
تعال عند
Sub الخاص بالسطر التالى
كود :
Private Sub ShowFileInfo()
ستجد بداخله السطر الاتى
كود :
TextBox1.Text = MyFile.FullName
فقط كل ما عليك فعله اسفل منه مباشر
كود :
For Each OneElement In wb.Document.GetElementsByTagName("input")
If OneElement.GetAttribute("type") = "file" Then
If OneElement.GetAttribute("name") = "upfile_0" Then
Dim tr As New System.Threading.Thread(AddressOf SendK)
tr.Start()
OneElement.InvokeMember("click")
tr.Abort()
End If
Exit For
End If
Next
الان كل ما عليك اضافة الـ
Sub التالى فى اى مكان
كود :
Private Sub SendK()
SendKeys.SendWait(MyFile.FullName) 'the file address path
SendKeys.SendWait(Chr(13))
End Sub
الان بمجرد سحب الملف واضافته فى الفورم
سيقوم تلقائياً بفتح OpenFileDialog الخاص بالمتصفح
ووضع المسار تلقائي دون تدخل منك من فم اخفاء OpenFileDialog
عند الانتهاء يمكنك الضغط على زر رفع الملف
تذكر يجب عليك تعديل التالى فى الحدث Button1_Click
اجعله على هذا الشكل لانك قمت بتغييره وبمجرد الاستخدام سيسبب معك مشكلة
كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
wb.Document.GetElementById("upfile_0").InvokeMember("Click")
End Sub
او يمكنك حذف الحدث تماماً بما انك ستعتمد على السحب
واتمنى ما قمت بطرحه الانسب لك مع عملية السحب لان هذه الطريقة هى الانسب مع حالة الموقع المستخدم
تحياتى لك
وتمنياتى لك التوفيق