Upload di File su server web senza usare ftp

venerdì 20 gennaio 2012 - 13.22
Tag Elenco Tags  VB.NET  |  .NET 3.5

ridaria Profilo | Expert

Ciao ragazzi, ho bisogno di fare l'upload di files su server web senza usare ftp.

Il download già lo faccio senza usare ftp utilizzo la classe WebClient.

Ma l'upload non riesco a farlo mi da una serie di errori:

File non trovato:
Eccezione non gestita durante una connessione web client.


Mi date una mano?

Qualcuno lo ha già fatto?

Grazie
Riccardo D'Aria

Jeremy Profilo | Guru

Ciao Riccardo
>File non trovato:
>Eccezione non gestita durante una connessione web client.
Devi prima creare "fisicamente" il file sul Server e poi fare l'Upload.

Facci sapere...
Ciao

ridaria Profilo | Expert

Perdonami,


Cosa intendi cercare fisicamente il file sul Server????

Il file lo tengo qui in locale e lo devo inviare sul server.

Mi dai una mano?

Grazie
Riccardo D'Aria

Jeremy Profilo | Guru

>Cosa intendi cercare fisicamente il file sul Server????
creare ... non cercare!!

ridaria Profilo | Expert

Scusa l'erroe,

Ci0è deve già esserci il file sul server???


Non capisco!

Se lo devo creare sul server, significa che dopo averlo creato, il file c'è, e quindi cosa Uploddo a fare??

Scusami ma faccio fatica a capire. Di sicuro sono io!

Grazie ancora


Riccardo D'Aria

Jeremy Profilo | Guru

Ok.... Dammi tempo... stasera cerco un vecchio progetto e ti posto un po di codice.
Ciao.

ridaria Profilo | Expert

GRAZIE
Riccardo D'Aria

Jeremy Profilo | Guru

Ciao ho dato un occhio a quello che ti dicevo .....
Io però ho usato le classi FtpWebRequest .... va bene uguale? altrimenti mi ci vuole un pò di tempo per fare delle prove.

Ad ogni modo .... ti posto qui sotto il codice che ho a disposizione.
Ci ho aggiunto qualche commento, ma niente di particolare.
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Ovviamente sono da adattare alle tue esigenze .... se hai bisogno facci sapere....
Il fatto di dover creare fisicamente il file sul server, probabilmente, me lo sono sognato .... o comunque ricordavo male.

Ciao

ridaria Profilo | Expert

>Ciao ho dato un occhio a quello che ti dicevo .....
>Io però ho usato le classi FtpWebRequest .... va bene uguale?


Grazie ma con FtpWebRequest, lo ho fatto anche io :-)

è che non voglio fare l'upload via FTP per via del maledetto errore 425 che ogni tanto su pc diversi mi rompe le scatole.

e quindi, dato che con WebClient faccio i download, mi chiedevo se è possibile fare anche gli upload :-)

Grazie
Riccardo D'Aria

Jeremy Profilo | Guru

Ciao Riccardo.
Anche WebClient usa il protocollo Ftp per l'Upload del file ..... ad ogni modo se vuoi usare quello a me sta bene.
Se mi fai vedere un pò di codice posso dargli un occhio per capire dove potrebbe essere il problema.

Per quanto riguarda l'FtpWebRequest ..... non conosco l'errore 425 nel dettaglio .... però anche su quello si ci potrebbe lavorare sopra.

Facci sapere...
Ciao

ridaria Profilo | Expert

>Ciao Riccardo.
>Anche WebClient usa il protocollo Ftp per l'Upload del file .....
>ad ogni modo se vuoi usare quello a me sta bene.
>Se mi fai vedere un pò di codice posso dargli un occhio per capire
>dove potrebbe essere il problema.

Questo è il codice che sto usando con WebClient

Dim result As Boolean = False
Dim pathServer As String = ""
Dim nomeFile As String = ""
Try

pathServer = "http://www.prezyparrucchieri.com/FilesAggiornamento/"
nomeFile = "fileUpload.txt"


Dim myStringWebResource As String = pathServer & nomeFile
' Create a new WebClient instance.
Dim myWebClient As New WebClient()
myWebClient.Credentials = New NetworkCredential("******", "************")
' Concatenate the domain with the Web resource filename. Because DownloadFile
'requires a fully qualified resource name, concatenate the domain with the Web resource file name.
'myStringWebResource = remoteUri + fileName
' The DownloadFile() method downloads the Web resource and saves it into the current file-system folder.
myWebClient.UploadFile(myStringWebResource, "POST", pFileLocale)


result = True

Catch ex As Exception

MsgBox(ex.Message, MsgBoxStyle.Critical)

Return result
Finally

End Try
Return result
End Function

E QUESTO COSì COME STA MI DA: Errore del server remoto: (405) Metodo non consentito.


>Per quanto riguarda l'FtpWebRequest ..... non conosco l'errore
>
425
nel dettaglio .... però anche su quello si ci potrebbe lavorare

>sopra.

Questo è il codice che uso con FtpWebRequest:

Function InviaFileTrasferimento(ByVal pnomefile As String) As Boolean
Dim pathServer As String = ""
Dim nomeFile As String = ""
Dim Username As String = ""
Dim Password As String = ""
Dim fileDaCaricare As String = ""
Dim Invio As Boolean = False

Try


fileDaCaricare = pnomefile

pathServer = "ftp://ftp.prezyparrucchieri.com/FilesAggiornamento/"
nomeFile = Path.GetFileName(fileDaCaricare)

Username = "*********"
Password = "****************"


Dim ftpConn As System.Net.FtpWebRequest = DirectCast(System.Net.WebRequest.Create(pathServer & nomeFile), System.Net.FtpWebRequest)

ftpConn.UsePassive = False
ftpConn.Method = WebRequestMethods.Ftp.UploadFile

Dim sourceStream As StreamReader = New StreamReader(fileDaCaricare)
Dim fileContents() As Byte = System.Text.Encoding.ASCII.GetBytes(sourceStream.ReadToEnd())
sourceStream.Close()
ftpConn.ContentLength = fileContents.Length
ftpConn.Credentials = New NetworkCredential(Username, Password)
Dim requestStream As Stream = ftpConn.GetRequestStream()
requestStream.Write(fileContents, 0, fileContents.Length)
requestStream.Close()
Dim response As FtpWebResponse = ftpConn.GetResponse()
MsgBox("Trasferimento file ESEGUITO: " & vbCrLf & vbCrLf & response.StatusDescription, MsgBoxStyle.Information)
Invio = True
response.Close()
Return True

Catch ex As Exception
MsgBox("Errore: " & vbCrLf & "Server: " & pathServer & vbCrLf & vbCrLf & ex.Message, MsgBoxStyle.Exclamation)
Invio = False
End Try

Return Invio

End Function

Su quest'ultimo caso ti spiego bene.
Questo Blocco di codice lo uso su circa 200 client installati sui computer più disparati sparsi per l'Italia.
E stranamente, su circa una decina di computers mi restituisce l'errore 425 che ha a che fare con la connessione FTP.
Quindi una cosa abbastanza strana, non trovi? Se pensi che su dieci pc fila tutto liscio e su uno no.
C'è da dire a ncora che a volte, come in questo caso, mi capita che dopo due anni di Upload tranquilli, comincia a dirmi: Errore 425 connessione dati non disponibile etcc.... ALLUCINANTE

Se vuoi aiutarmi ti ringrazio di cuore


Riccardo D'Aria

Jeremy Profilo | Guru

Ciao Riccardo.
Ho fatto delle prove.
Con Questo codice:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
riesco a fare l'Upload senza nessun problema.

Facci sapere...
Ciao
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5