Hallo Leute,
da ich hier noch kein Tutorial dazu gefunden hab,
mach ich mal eins (Falls es doch eins gibt könnt ihr das hier ja löschen).
Ok, kommen wir zum PHP Skript.
Vom Skript müsst ihr nicht viel verstehen, ein paar PHP kenntnisse wären aber von Vorteil.
So, nun zum VB Code.
Mehr gibts auch nichts mehr. Ich hoffe ich konnte euch ein wenig weiterhelfen.
Falls ihr noch Anregungen oder Verbesserungsvorschläge habt, lasst es mich wissen.
Edit: Es kommt später noch was dazu (Upload Progressbar, sicherer PHP Upload)
Ok, nach langer Zeit, hab ich wieder etwas Zeit gehabt (hört sich iwie komisch an), das Projekt weiter zu bearbeiten
Mit folgendem Code, könnt ihr den genauen Fortschritt des Uploads in eurem Programm anzeigen lassen.
- Upload Geschwindigkeit
- Progressbar
- Datei Größe / upgeloadete Größe
So hier noch den PHP Upload mit abfrage nach Dateityp und Dateigröße.
Die PHP-Datei in dem Archiv einfach auf den Webserver packen, und im Programm den Link anpassen.
Bedanken nicht vergessen
da ich hier noch kein Tutorial dazu gefunden hab,
mach ich mal eins (Falls es doch eins gibt könnt ihr das hier ja löschen).
Ok, kommen wir zum PHP Skript.
PHP-Quellcode
- <?php
- $uploaddir = $_GET['d']; // d wird später beim Upload angegeben (Kann aber auch individuell verändert werden)
- if (is_uploaded_file($_FILES['file']['tmp_name'])) {
- if (strlen($uploaddir) > 0) {
- $uploadfile = $uploaddir."/". basename($_FILES['file']['name']);
- } else {
- $uploadfile = basename($_FILES['file']['name']);
- }
- // $uploaddir."/". muss beim entfernen von uploaddir oben entfernt werden
- echo "File ". $_FILES['file']['name'] ." uploaded successfully. ";
- if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) {
- echo "File is valid, and was successfully moved. ";
- }
- else
- print_r($_FILES);
- }
- else {
- echo "Upload Failed!!!";
- print_r($_FILES);
- }
- ?>
Vom Skript müsst ihr nicht viel verstehen, ein paar PHP kenntnisse wären aber von Vorteil.
So, nun zum VB Code.
VB.NET-Quellcode
- Dim wc As New WebClient
- Try
- wc.Encoding = System.Text.Encoding.Default
- wc.Headers.Add("Content-Type", "binary/octet-stream")
- Dim result As Byte() = wc.UploadFile(server & "/upload.php?d=" & uploaddir, "POST", Dateipfad)
- Dim s As String = System.Text.Encoding.UTF8.GetString(result, 0, result.Length)
- ' Die echo's die im PHP ausgegeben werden, werden hier in einer MsgBox angezeigt.
- MessageBox.Show(s)
- Catch ex As Exception
- MessageBox.Show(ex.Message)
- End Try
Mehr gibts auch nichts mehr. Ich hoffe ich konnte euch ein wenig weiterhelfen.
Falls ihr noch Anregungen oder Verbesserungsvorschläge habt, lasst es mich wissen.
Edit: Es kommt später noch was dazu (Upload Progressbar, sicherer PHP Upload)
Ok, nach langer Zeit, hab ich wieder etwas Zeit gehabt (hört sich iwie komisch an), das Projekt weiter zu bearbeiten
Mit folgendem Code, könnt ihr den genauen Fortschritt des Uploads in eurem Programm anzeigen lassen.
- Upload Geschwindigkeit
- Progressbar
- Datei Größe / upgeloadete Größe
VB.NET-Quellcode
- Imports System.Net
- Public Class Form1
- Private WithEvents wc As New WebClient 'Dieses Mal deklarieren wir den Webclient als WithEvent, damit wir auf die verschiedenen Events vom Webclient zugreifen können (z.B. UploadProgressChanged, was auch unten benutzt wird
- Dim stopuhr As New Stopwatch
- Dim temp As Integer = 0
- 'Benötigte deklarationen für die bestimmung der Uplaod Geschwindigkeit
- Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
- If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
- TextBox1.Text = OpenFileDialog1.FileName
- End If
- End Sub
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- Button1.Enabled = False
- Try
- wc.Encoding = System.Text.Encoding.Default
- wc.Headers.Add("Content-Type", "binary/octet-stream")
- Dim uri As New Uri("http://deinserver/upload.php?d=" & TextBox2.Text)
- wc.UploadFileAsync(uri, "POST", TextBox1.Text)
- Catch ex As Exception
- MessageBox.Show(ex.Message)
- Button1.Enabled = True
- End Try
- End Sub
- Private Sub wc_UploadProgressChanged(ByVal sender As Object, ByVal e As System.Net.UploadProgressChangedEventArgs) Handles wc.UploadProgressChanged
- stopuhr.Stop()
- Label3.Text = Math.Round((e.BytesSent - temp) / 1024 / (stopuhr.ElapsedMilliseconds / 1000)) & " KB/s" 'Geschwindigkeit
- Label4.Text = Math.Round(e.TotalBytesToSend \ 1024) & " KB / " & Math.Round(e.BytesSent \ 1024) & " KB"
- If Not stopuhr.IsRunning Then
- If e.ProgressPercentage > 0 Then
- If Not ProgressBar1.Value = 100 Then
- ProgressBar1.Value = e.ProgressPercentage * 2 'Wieso mal 2?!... Komischerweise wird nur die hälfte angezeigt.
- Label5.Text = e.ProgressPercentage * 2 & "%"
- Else
- MessageBox.Show("Datei wurde erfolgreich hochgeladen")
- ProgressBar1.Value = 0
- Label3.Text = Nothing
- Label4.Text = Nothing
- Label5.Text = Nothing
- Button1.Enabled = True
- End If
- Else
- End If
- End If
- temp = e.BytesSent
- stopuhr.Restart()
- End Sub
- End Class
So hier noch den PHP Upload mit abfrage nach Dateityp und Dateigröße.
PHP-Quellcode
- <?php
- $uploaddir = $_POST['d'];
- //Dateityp und größe wird erst nach dem upload geprüft.
- if (($_FILES['file']['type'] == "image/gif")
- || ($_FILES['file']['type'] == "image/jpeg")
- || ($_FILES['file']['type'] == "image/pjpeg")
- && ($_FILES["file"]["size"] < 20000)) //Dateigröße angeben. Falls nicht gewollt einfach entfernen
- //Hier die Filter, dürfte klar sein was du hier ändern musst
- /*
- Als Beispiel füge ich nen 4ten hinzu
- if (($_FILES['file']['type'] == "image/gif")
- || ($_FILES['file']['type'] == "image/jpeg")
- || ($_FILES['file']['type'] == "image/pjpeg")
- || ($_FILES['file']['type'] == "image/pjpeg")
- && ($_FILES["file"]["size"] < 20000))
- Also im großen und ganzen nicht so schwer.
- */
- {
- if (is_uploaded_file($_FILES['file']['tmp_name']))
- {
- if (strlen($uploaddir) > 0)
- //Falls ein Verzeichnis angegeben wurde
- {
- $uploadfile = $uploaddir."/". basename($_FILES['file']['name']);
- } else {
- //Falls kein Verzeichnis angegeben wurde
- $uploadfile = basename($_FILES['file']['name']);
- }
- echo "File ". $_FILES['file']['name'] ." uploaded successfully. ";
- if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile))
- {
- echo "File is valid, and was successfully moved. ";
- }
- else
- print_r($_FILES);
- } else {
- echo "Upload Failed!!!";
- print_r($_FILES);
- }
- } else {
- echo "Nur so und so welche Dateien sind erlaubt"; //Was auch immer du einem "Falsch Uploader" sagen willst :D
- }
- ?>
Die PHP-Datei in dem Archiv einfach auf den Webserver packen, und im Programm den Link anpassen.
Bedanken nicht vergessen
Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „Rinecamo“ ()