Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Aiuto multi upload file da app. c# a sito web in php
Forum - C# / VB.NET - Aiuto multi upload file da app. c# a sito web in php

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
natamas (Member)
Pro


Messaggi: 115
Iscritto: 09/04/2006

Segnala al moderatore
Postato alle 19:46
Lunedì, 16/03/2015
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
Codice sorgente - presumibilmente Plain Text

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



file upload.php
Codice sorgente - presumibilmente C# / VB.NET

  1. <?php
  2.  
  3. $path = "datafile/";
  4.  
  5. if ((($_FILES["file"]["type"] == "image/gif")
  6.  
  7. || ($_FILES["file"]["type"] == "image/jpeg")
  8.  
  9. || ($_FILES["file"]["type"] == "image/pjpeg")
  10.  
  11. || ($_FILES["file"]["type"] == "image/png")
  12.  
  13. || ($_FILES["file"]["type"] == "text/html"))
  14.  
  15. && ($_FILES["file"]["size"] < 2000000))
  16.  
  17.   {
  18.  
  19.   if ($_FILES["file"]["error"] > 0)
  20.  
  21.     {
  22.  
  23.     echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
  24.  
  25.     }
  26.  
  27.   else
  28.  
  29.     {
  30.  
  31.     echo "Upload: " . $_FILES["file"]["name"] . "<br />";
  32.  
  33.     echo "Type: " . $_FILES["file"]["type"] . "<br />";
  34.  
  35.     echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
  36.  
  37.     //echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
  38.  
  39.  
  40.  
  41.     if (file_exists($path . $_FILES["file"]["name"]))
  42.  
  43.       {
  44.  
  45.       echo $_FILES["file"]["name"] . "Upload non eseguito, file esistente. ";
  46.  
  47.       }
  48.  
  49.     else
  50.  
  51.       {
  52.  
  53.       move_uploaded_file($_FILES["file"]["tmp_name"],
  54.  
  55.       $path . $_FILES["file"]["name"]);
  56.  
  57.       //echo "Stored in: " . $path . $_FILES["file"]["name"];
  58.  
  59.          
  60.  
  61.       }
  62.  
  63.     }
  64.  
  65.   }
  66.  
  67. else
  68.  
  69.   {
  70.  
  71.   echo "Invalid file format!";
  72.  
  73.   }
  74.  
  75. ?>
  76.  
  77. </p>



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

Codice sorgente - presumibilmente C++

  1. public static void InviaFile(string file)
  2.         {
  3.             try
  4.             {
  5.                 MessageBox.Show("avvio upload");
  6.                 WebClient Client = new WebClient();
  7.                 Client.UploadFile("http://miosito/upload.php", "POST", file);
  8.             }
  9.             catch (Exception e)
  10.             {
  11.                 MessageBox.Show("errore upload: " + e.Message );
  12.             }
  13.         }



Come posso fare? qualcuno sa darmi una dritta su come fare una funzione adatta al mio file upload.php?
Grazie

PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 21:54
Lunedì, 16/03/2015
Testo quotato

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?

PM Quote
Avatar
natamas (Member)
Pro


Messaggi: 115
Iscritto: 09/04/2006

Segnala al moderatore
Postato alle 22:28
Lunedì, 16/03/2015
Testo quotato

Postato originariamente da Roby94:

Testo quotato

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 (www.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?

PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 19:55
Martedì, 17/03/2015
Testo quotato

Postato originariamente da natamas:
il sito è un dominio comprato su aruba... perciò di primo livello (www.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...
Codice sorgente - presumibilmente Plain Text

  1. ...quarto.terzo.secondo.primo



http://it.wikipedia.org/wiki/Dominio_di_primo_livello

Mettere in dubbio le nostre conoscenze e la fiducia cieca che abbiamo in esse non fa male alla salute, migliore dei casi impariamo qualcosa.

PM Quote
Avatar
natamas (Member)
Pro


Messaggi: 115
Iscritto: 09/04/2006

Segnala al moderatore
Postato alle 20:06
Martedì, 17/03/2015
ok... chiudiamo il discorso?
Mi servirebbe una mano per il mio programma. grazie

PM Quote
Avatar
vankraster (Member)
Rookie


Messaggi: 32
Iscritto: 05/11/2010

Segnala al moderatore
Postato alle 18:08
Sabato, 28/03/2015
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:
http://www.codeproject.com/Tips/671437/Creating-Web-Servic ...
http://www.sitepoint.com/web-services-with-php-and-soap-1/
http://davidwalsh.name/web-service-php-mysql-xml-json

Ultima modifica effettuata da vankraster il 28/03/2015 alle 18:15
PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 20:01
Sabato, 28/03/2015
Il problema e proprio qui.

Codice sorgente - presumibilmente Plain Text

  1. 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=c:/prova.txt


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

Codice sorgente - presumibilmente Plain Text

  1.     $_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 il 28/03/2015 alle 20:04


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
natamas (Member)
Pro


Messaggi: 115
Iscritto: 09/04/2006

Segnala al moderatore
Postato alle 20:19
Sabato, 28/03/2015
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

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 12:54
Domenica, 29/03/2015
Altrimenti c'e anche il metodo webclient che puoi alterare il contenuto dei
Controlli del form nella pagina html tramite id o tag.
E simulare il click sul pulsante upload


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo