none
C# Datei upload mit php RRS feed

  • Frage

  • Hi, derzeit benutze ich noch FTP um daten auf meinen Webserver hochzuladen, da die Anmeldedaten aber direkt im Quellcode liegen und decompiliert werden können, suche ich nun eine methode ohne Anmeldedaten. Da es ja per PHP möglich ist datei hochzuladen habe ich bei google einen einfachen simplen code gefunden, den ich gerne ändern würde. Leider habe ich ka von PHP und brauche eure Hilfe.

    Mit dieser Methode kann ich Datein hochladen, allerdings steht in der PHP datei fest, wohin die daten auf den Webserver geschoben werden. Ich möchte jedoch von der Anwendung parameter übergeben, wohin die Datei verschoben werden soll.

    Wie kann ich das anstellen?

    C#

    System.Net.WebClient Client = new System.Net.WebClient ();
    
    Client.Headers.Add("Content-Type","binary/octet-stream");
    
    byte[] result = Client.UploadFile ("http://your_server/upload.php","POST","C:\test.txt");
    
    this.Text = System.Text.Encoding .UTF8 .GetString (result,0,result.Length ); 

    PHP

    <?php
    
    $uploaddir = 'upload/'; // Relative Upload Location of data file
    
    if (is_uploaded_file($_FILES['file']['tmp_name'])) {
    
    $uploadfile = $uploaddir . 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);
    
    }
    
    ?>

    Donnerstag, 29. November 2012 19:01

Antworten

  • Hi,

    was Du da wie und wo im PHP Skript ändern musst, solltest Du in einem PHP Forum fragen.

    Für die Übergabe der Parameter kannst Du einfach den Querystring verwenden.

    Anstelle von:

      http://your_server/upload.php

    gibst Du dann bspw.:

      http://your_server/upload.php?Ordner=DeinOrdnername

    an. Auslesen kannst Du das dann im PHP Skript mit:

      $_GET['Ordner']

    Was Du dann danach damit anstellen kannst, solltest Du, wie schon geschrieben, in einem PHP Forum fragen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert H4R0 Freitag, 30. November 2012 12:45
    Donnerstag, 29. November 2012 21:58
    Moderator
  • Hallo H4R0,

    den C# Code kannst du so nicht direkt in PHP umsetzen, denn dein C# Code führst du via Win- bzw. Konsolenanwendung aus, so dass du direkt auf C:\ zugreifen kannst. PHP läuft normalerweise auf einem Webserver, die Daten bekommt PHP-Anwendung meistens über ein Webclient (Browser) zugeschickt. Der PHP-Code ist nur ein Teil des Upload, es fehlt der Teil mit dem Formular zum Hochladen von Daten, welcher dein PHP-Code als Ziel hat.

    Schaue dir das mal an: http://www.php.net/manual/en/features.file-upload.post-method.php

    Grüße

    Tu

    Edit: aber genauso kannst du auch mit asp/asp.net anstellen wenn der Web-/FTP-Server asp unterstützt.
    • Bearbeitet Tu Dang Freitag, 30. November 2012 09:48
    • Als Antwort markiert H4R0 Freitag, 30. November 2012 12:45
    Freitag, 30. November 2012 09:45
  • Also kein Unterschied. Denn quasi bekannte Anmeldedaten sind äquivalent zu keinen Anmeldedaten.. Abgesehen davon, wer sagt, das der so genutzte FTP-Zugang über die Berechtigungen verfügen muss, Daten zu löschen?

    • Als Antwort markiert H4R0 Freitag, 30. November 2012 12:45
    Donnerstag, 29. November 2012 21:35

Alle Antworten

  • Hae? Wo ist der Vorteil mit PHP und ohne Anmeldedaten???
    Donnerstag, 29. November 2012 19:13
  • Über die php methode kann man die datei hochladen ohne weiteres, bei FTP muss username und passwort angegeben werden und diese daten können über umwege ausgelesen werden, was jemanden ermöglicht sich mit diesen daten per ftp client einzuloggen und alle daten auf dem webserver zu löschen.
    Donnerstag, 29. November 2012 19:26
  • Also kein Unterschied. Denn quasi bekannte Anmeldedaten sind äquivalent zu keinen Anmeldedaten.. Abgesehen davon, wer sagt, das der so genutzte FTP-Zugang über die Berechtigungen verfügen muss, Daten zu löschen?

    • Als Antwort markiert H4R0 Freitag, 30. November 2012 12:45
    Donnerstag, 29. November 2012 21:35
  • Hi,

    was Du da wie und wo im PHP Skript ändern musst, solltest Du in einem PHP Forum fragen.

    Für die Übergabe der Parameter kannst Du einfach den Querystring verwenden.

    Anstelle von:

      http://your_server/upload.php

    gibst Du dann bspw.:

      http://your_server/upload.php?Ordner=DeinOrdnername

    an. Auslesen kannst Du das dann im PHP Skript mit:

      $_GET['Ordner']

    Was Du dann danach damit anstellen kannst, solltest Du, wie schon geschrieben, in einem PHP Forum fragen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert H4R0 Freitag, 30. November 2012 12:45
    Donnerstag, 29. November 2012 21:58
    Moderator
  • Hallo H4R0,

    den C# Code kannst du so nicht direkt in PHP umsetzen, denn dein C# Code führst du via Win- bzw. Konsolenanwendung aus, so dass du direkt auf C:\ zugreifen kannst. PHP läuft normalerweise auf einem Webserver, die Daten bekommt PHP-Anwendung meistens über ein Webclient (Browser) zugeschickt. Der PHP-Code ist nur ein Teil des Upload, es fehlt der Teil mit dem Formular zum Hochladen von Daten, welcher dein PHP-Code als Ziel hat.

    Schaue dir das mal an: http://www.php.net/manual/en/features.file-upload.post-method.php

    Grüße

    Tu

    Edit: aber genauso kannst du auch mit asp/asp.net anstellen wenn der Web-/FTP-Server asp unterstützt.
    • Bearbeitet Tu Dang Freitag, 30. November 2012 09:48
    • Als Antwort markiert H4R0 Freitag, 30. November 2012 12:45
    Freitag, 30. November 2012 09:45
  • Vielen Dank, funkioniert super :)

    Freitag, 30. November 2012 12:58