natamas (Member)
Pro
Messaggi: 115
Iscritto: 09/04/2006
|
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 |
<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
Codice sorgente - presumibilmente C# / VB.NET |
<?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:
Codice sorgente - presumibilmente C++ |
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 |
|
Roby94 (Member)
Guru
Messaggi: 1170
Iscritto: 28/12/2009
|
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? |
|
natamas (Member)
Pro
Messaggi: 115
Iscritto: 09/04/2006
|
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 (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? |
|
Roby94 (Member)
Guru
Messaggi: 1170
Iscritto: 28/12/2009
|
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 |
...quarto.terzo.secondo.primo
|
|
|
natamas (Member)
Pro
Messaggi: 115
Iscritto: 09/04/2006
|
ok... chiudiamo il discorso?
Mi servirebbe una mano per il mio programma. grazie
|
|
vankraster (Member)
Rookie
Messaggi: 32
Iscritto: 05/11/2010
|
Ultima modifica effettuata da vankraster il 28/03/2015 alle 18:15 |
|
Thejuster (Admin)
Guru^2
Messaggi: 2305
Iscritto: 04/05/2008
|
Il problema e proprio qui.
Codice sorgente - presumibilmente Plain Text |
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 |
$_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
|
|
natamas (Member)
Pro
Messaggi: 115
Iscritto: 09/04/2006
|
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
|
|
Thejuster (Admin)
Guru^2
Messaggi: 2305
Iscritto: 04/05/2008
|
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
|
|