Oppure

Loading
16/03/15 18:46
natamas
Salve a tutti, sto creando un piccolo programma in c# che crea diversi file (.png e .htm) e che successivamente li uppi su un mio sito di primo livello in php.
Ho gia il codice sul sito che funziona tranquillamente tramite normale form web:

file inviofile.htm
<form action="upload.php" method="post" enctype="multipart/form-data">
<input name="file" type="file" id="file" />
<input name="submit" type="submit" value="Submit" />
</form>


file upload.php
<?php

$path = "datafile/";

if ((($_FILES["file"]["type"] == "image/gif")

|| ($_FILES["file"]["type"] == "image/jpeg")

|| ($_FILES["file"]["type"] == "image/pjpeg")

|| ($_FILES["file"]["type"] == "image/png")

|| ($_FILES["file"]["type"] == "text/html"))

&& ($_FILES["file"]["size"] < 2000000))

  {

  if ($_FILES["file"]["error"] > 0)

    {

    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";

    }

  else

    {

    echo "Upload: " . $_FILES["file"]["name"] . "<br />";

    echo "Type: " . $_FILES["file"]["type"] . "<br />";

    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";

    //echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";



    if (file_exists($path . $_FILES["file"]["name"]))

      {

      echo $_FILES["file"]["name"] . "Upload non eseguito, file esistente. ";

      }

    else

      {

      move_uploaded_file($_FILES["file"]["tmp_name"],

      $path . $_FILES["file"]["name"]);

      //echo "Stored in: " . $path . $_FILES["file"]["name"];

	  

      }

    }

  }

else

  {

  echo "Invalid file format!";

  }

?>

</p>



Ora io vorrei fare una funzione che invi direttamente dalla mia applicazione in c#
ho provato con questo, ma non funziona:

public static void InviaFile(string file)
        {
            try
            {
                MessageBox.Show("avvio upload");
                WebClient Client = new WebClient();
                Client.UploadFile("http://miosito/upload.php", "POST", file);
            }
            catch (Exception e)
            {
                MessageBox.Show("errore upload: " + e.Message );
            }
        }


Come posso fare? qualcuno sa darmi una dritta su come fare una funzione adatta al mio file upload.php?
Grazie
aaa
16/03/15 20:54
Roby94
Postato originariamente da natamas:un mio sito di primo livello in php.

Un sito non ha livelli, al massimo un dominio si distingue in livelli, ma dubito proprio che tu abbia un dominio di primo livello.

Cosa fa il programma, entra nel blocco catch, se si, con che eccezione? e con quale errore? Se no, dici che non funziona perché il file non appare nello spazio host?
aaa
16/03/15 21:28
natamas
Postato originariamente da Roby94:

Postato originariamente da natamas:un mio sito di primo livello in php.

Un sito non ha livelli, al massimo un dominio si distingue in livelli, ma dubito proprio che tu abbia un dominio di primo livello.

Cosa fa il programma, entra nel blocco catch, se si, con che eccezione? e con quale errore? Se no, dici che non funziona perché il file non appare nello spazio host?

il sito è un dominio comprato su aruba... perciò di primo livello (xxx.com) e non xxx.altervista.org...
il catch l'ho messo apposta per vedere se ci sono errori ma non esce nulla... quando lo avvio mi dice "upload avviato" (come da messagebox) e poi non esce più nulla. Anche controlla sul sito in ftp non ci sta nessun file caricato. pero se vado con il form via web funziona tutto....ufff
Nessuno ha qualche progetto di esempio con codice c# e php già pronto funzionante?
aaa
17/03/15 18:55
Roby94
Postato originariamente da natamas:
il sito è un dominio comprato su aruba... perciò di primo livello (xxx.com) e non xxx.altervista.org...

Il sito è l'insieme di pagine web, il dominio è l'indirizzo.
l'indirizzo è formato da livelli nel seguente modo...
...quarto.terzo.secondo.primo


it.wikipedia.org/wiki/…

Mettere in dubbio le nostre conoscenze e la fiducia cieca che abbiamo in esse non fa male alla salute, migliore dei casi impariamo qualcosa.
aaa
17/03/15 19:06
natamas
ok... chiudiamo il discorso?
Mi servirebbe una mano per il mio programma. grazie
aaa
28/03/15 17:08
vankraster
Devi usare un WebService SOAP sul sito, è la cosa migliore... così puoi usare l'autenticazione e saprai che nessuno può in qualche modo craccare il tuo sistema. Attualmente con POST mi sembra non sicuro.
Se non lo conosci è un discorso lungo e io non posso darti una mano con PHP, io essendo uno sviluppatore ASP.NET, però ti posso dare qualche link dove poi guardare come si fa.

Link esterni:
codeproject.com/Tips/671437/…
sitepoint.com/web-services-with-php-and-soap-1/
davidwalsh.name/…
Ultima modifica effettuata da vankraster 28/03/15 17:15
aaa
28/03/15 19:01
Thejuster
Il problema e proprio qui.

 public static void InviaFile(string file)        {            try            {                MessageBox.Show("avvio upload");                WebClient Client = new WebClient();                Client.UploadFile("http://miosito/upload.php", "POST", file);            }            catch (Exception e)            {                MessageBox.Show("errore upload: " + e.Message );            }        }



Non puoi caricare un file in quel modo.
Occorre un procedimento diverso ed utilizzare la classe ftp.
Specificare username e password per l'accesso al sito web.
Dove ed in quale cartella coloccare un file.

La cosa e diversa da uno script in php.

Altrimenti se non ho capito male.
Il tuo file upload.php carica un file tramite un form di invio.

In questo caso.
Elimina il form ed il metodo post ed usa il metodo GET
Modificandoti ad hoc il file upload.php alle tue esigenze

Esempio: upload.php?file=/…


Al file upload.php dovresti fare un qualcosa del genere.


    $_FILES["file"]["name"] = $_GET['file'];



Non posso aiutarti di piu perche il file upload.php e solo una parte di uno script

Il consiglio che ti do.
Usa la classe FTP e molto piu comoda, semplice e veloce.
Ultima modifica effettuata da Thejuster 28/03/15 19:04
mire.forumfree.it/ - Mire Engine
C# UI Designer
28/03/15 19:19
natamas
Non voglio usare la classe FTP perche il programma è fatto in c# e quindi facilmente decompilabile...
Se questo accadesse avrebbero i miei dati d'accesso ftp al sito web.
Vedo di usare get invece di post, vediamo se funziona
aaa