8 messaggi dal 13 settembre 2008
Ciao,
ho creato un'applicazione che invia file ad un serve (una specie di client ftp).
Riesco a farlo lavorare in locale ma, quando lo carico sul serve, mi dà un errore.... L'unica cosa che cambio è il "localpath", sul pc è: c:\cartella\cartella\file, mentre sul server (aruba) è: d:\inetpub\web\miositoit\cartella\cartella\....
Posto il codice:
ProtectedSub cmdUpload_Click(ByVal sender AsObject, ByVal e As System.EventArgs) Handles cmdUpload.Click
' al click chiama la funzione e passa i parametri (forse vanno invertiti ma ho provato e non va)
uploadFileUsingFTP("pagina.htm", "ftp:\\ftp.hostingremoto.com\pagina.htm")
lblMsg.Text = "File caricati con successo"
EndSub
 
PublicSub uploadFileUsingFTP(ByVal CompleteFTPPath AsString, ByVal CompleteLocalPath AsString, OptionalByVal UName AsString = "", OptionalByVal PWD AsString = "")
UName = Session("Utente")
Dim nomesito AsString = tbsito.Text
'UName è la cartella personale dell'utente sul mio sito
CompleteLocalPath = "d:\inetpub\webs\miosotoit\utenti\" & UName & "\pagina.htm"
'Questo è l'url in locale
'CompleteLocalPath = "c:\siti\utenti\" & UName & "\pagina.htm"
 
'Ovviamente, hostingremoto.com è il suo sito:
CompleteFTPPath = "ftp://ftp.hostingremoto.com/" & nomesito & "/pagina.htm"

 
Dim reqObj As FtpWebRequest = WebRequest.Create(CompleteFTPPath)
 
reqObj.Method = WebRequestMethods.Ftp.UploadFile
reqObj.Credentials = New NetworkCredential(UName, PWD)
Dim streamObj As FileStream = File.OpenRead(CompleteLocalPath)
Dim buffer(streamObj.Length) AsByte
streamObj.Read(buffer, 0, buffer.Length)
streamObj.Close()
 
streamObj = Nothing

reqObj.GetRequestStream().Write(buffer, 0, buffer.Length)
reqObj = Nothing
End sub

Qualcuno sa dirmi perché succede?
Grazie
2.190 messaggi dal 04 marzo 2004
Contributi | Blog
Ciao,
CompleteFTPPath = "ftp://ftp.hostingremoto.com/" & nomesito & "/pagina.htm"
al di là della tua implementazione, non credo che ci siano i permessi di scrittura nella cartella personale del tuo utente, se non sbaglio Aruba lo consente solo in Public, Image e MDB-Database, quindi dovresti rivedere alcune parti della tua logica pensando di inserire le cartelle personalizzate all'interno di una di queste.

Se puoi farlo magari dopo andiamo a vedere il codice

Alessio Leoncini (WinRTItalia.com)
.NET Developer, Interactive Designer, UX Specialist, Trainer
8 messaggi dal 13 settembre 2008
Grazie per aver risposto..

I permessi nel server remoto ci sono, infatti, facendo girare l'applicazione in locale, riesco a trasferire i file. Il problema nasce quando sposto tutto sul server. Lì non funziona.
Infatti è questo che non capisco, l'unica cosa che cambio è il path locale.
47 messaggi dal 09 settembre 2008
Prova a vedere e esiste una proprietà da settare nell'oggetto 'FtpWebRequest' per poter indicare la cartella di startup, che nel tuo caso, sarà '\miosito.com'.
438 messaggi dal 04 agosto 2002
Contributi
ubimaior ha scritto:
Ciao,
ho creato un'applicazione che invia file ad un serve (una specie di client ftp).
Riesco a farlo lavorare in locale ma, quando lo carico sul serve, mi dà un errore....


... ma qual'è l'errore?
Siamo sicuri che puoi utilizzare in uscita il protocollo ftp da quella macchina?

v
2.190 messaggi dal 04 marzo 2004
Contributi | Blog
Riesco a farlo lavorare in locale ma, quando lo carico sul serve, mi dà un errore....

ah ok, pensavo che in locale usassi il tuo server ftp del pc
I permessi nel server remoto ci sono, infatti, facendo girare l'applicazione in locale, riesco a trasferire i file. Il problema nasce quando sposto tutto sul server. Lì non funziona.
Infatti è questo che non capisco, l'unica cosa che cambio è il path locale.

riguardando il codice vedo che tu imposti come path locale, cioè come path del file da trasferire sul server, un percorso assoluto sul server stesso: CompleteLocalPath = "d:\inetpub\webs\miosotoit\utenti\" & UName & "\pagina.htm" , io credo che questo file non esista anche perchè mi sembra di capire che tu vuoi farne l'upload  , penso che CompleteLocalPath debba rimanere un percorso locale di un file del pc dell'utente, ed in questo caso potresti utilizzare il controllo FileUpload per far scegliere il file direttamente all'utente:

Dim reqObj As FtpWebRequest = WebRequest.Create(CompleteFTPPath) reqObj.Method = WebRequestMethods.Ftp.UploadFilereqObj.Credentials = New NetworkCredential(UName, PWD)Dim arrayFile As Byte() = New Byte(FileUpload1.PostedFile.ContentLength - 1)  {}Dim fileStream As Stream = FileUpload1.PostedFile.InputStream fileStream.Read(arrayFile, 0, FileUpload1.PostedFile.ContentLength) reqObj.GetRequestStream().Write(arrayFile, 0, arrayFile.Length) reqObj = Nothing

Alessio Leoncini (WinRTItalia.com)
.NET Developer, Interactive Designer, UX Specialist, Trainer

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.