Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Upload a File Ftp - "Could Not find A Part Of Path"
giovedì 05 giugno 2008 - 11.48
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Mikyct86
Profilo
| Junior Member
81
messaggi | Data Invio:
gio 5 giu 2008 - 11:48
Salve,
Si sta verificando una cosa che nn riesco a spiegare.
Sto cercando di creare un upload tramite ftp in Asp.Net in vb.
In Locale tutto bene.L'upload riesce con successo.
Ma sul pubblicato sull'HostServer nn riesce a trovare il path del file in locale.
Qui è il mio codice
Public Sub UploadFile2(ByVal Path As String, ByVal LocalPath As String, ByVal Name As String)
'Create a FTP Request Object and Specfiy a Complete Path
Dim reqObj As FtpWebRequest = WebRequest.Create("ftp://" + Host + Path + Name)
'Call A FileUpload Method of FTP Request Object
reqObj.Method = WebRequestMethods.Ftp.UploadFile
'If you want to access Resourse Protected You need to give User Name and PWD
reqObj.Credentials = New NetworkCredential(_UserName, _Password)
'FileStream object read file from Local Drive
Dim streamObj As FileStream = File.OpenRead(LocalPath)
'Store File in Buffer
Dim buffer(streamObj.Length) As Byte
'Read File from Buffer
streamObj.Read(buffer, 0, buffer.Length)
'Close FileStream Object Set its Value to nothing
streamObj.Close()
streamObj = Nothing
'Upload File to ftp://localHost/ set its object to nothing
reqObj.GetRequestStream().Write(buffer, 0, buffer.Length)
reqObj = Nothing
End Sub
Public Sub SendViaFtp()
Try
Dim FileName() As String
FileName = FileUpload1.FileName.Split(".")
If FileName(FileName.Length - 1) <> "jpg" Then
Utilities.WriteAlert("Formato File non accettato")
End If
Dim localpath As String
localpath = Path.GetFullPath(FileUpload1.PostedFile.FileName)
Dim RemotePath As String
RemotePath = "/salemi.biz/app_themes/salemi/images/categorie/cat_" & DropDownList1.SelectedValue & "/prod_" & txtProdottoID.Text
If (FileUpload1.HasFile) Then
Dim file_size = FileUpload1.PostedFile.ContentLength
If file_size > 0 Then
objFtp.UploadFile2(RemotePath, localpath, ".jpg")
Utilities.WriteAlert("invio Eseguito con successo")
End If
End If
Catch ex As Exception
Utilities.WriteAlert(ex.Message)
End Try
End Sub
Aiuto!
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
gio 5 giu 2008 - 13:14
Ciao,
il problema è dovuto al fatto che non salvi in locale il file che l'utente ti ha inviato con il controllo FileUpload.
>Dim localpath As String
>localpath = Path.GetFullPath(FileUpload1.PostedFile.FileName)
>Dim RemotePath As String
>RemotePath = "/salemi.biz/app_themes/salemi/images/categorie/cat_" & DropDownList1.SelectedValue & "/prod_" & txtProdottoID.Text
>If (FileUpload1.HasFile) Then
>Dim file_size = FileUpload1.PostedFile.ContentLength
>If file_size > 0 Then
>objFtp.UploadFile2(RemotePath, localpath, ".jpg")
>Utilities.WriteAlert("invio Eseguito con successo")
>End If
>End If
Per salvarlo puoi usare il metodo FileUpload1.PostedFile.SaveAs("C:\temp\xxx.file")
Una volta eseguita l'operazione la variabile localpath dovrà contenere il percorso completo del file salvato (nell'esempio "c:\temp\xxx.file")
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
Mikyct86
Profilo
| Junior Member
81
messaggi | Data Invio:
gio 5 giu 2008 - 14:25
Nulla.Ora mi da accesso negato!
Boh...Perche succede solo sull'host server.In locale mi funziona alla grande!
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
gio 5 giu 2008 - 23:16
Ti da accesso negato perchè l'utente con cui gira il processo di asp.net non ha i permessi di scrittura nella cartella che hai impostato. Sul fatto che ti funziona sul tuo pc è una cosa normale, in quanto i percorsi rimangono uguali.
Cerco di fare un po' di chiarezza con un esempio pratico.
Supponiamo che tu abbia un file sotto sotto d:\temp\prova.zip. Apri la pagina e decidi di inserire questo file nel controllo upload. Nel momento in cui fai il postback e carichi il file lato server verrà inviato lo stream con il contenuto del file. Nel codice del pulsante che utilizzerai per fare l'upload dovrai prendere questo stream e salvarlo sul disco del server, altrimenti non potrai accederci. Ovviamente la cartella in cui lo salvi deve avere i permessi di scrittura.
Nel tuo caso invece la fase di salvataggio non viene fatta. Tu crei il nome del file locale con il seguente codice:
localpath = Path.GetFullPath(FileUpload1.PostedFile.FileName)
Se lo esegui in locale funziona correttamente (infatti il percorso sarà ancora d:\temp\prova.zip e il file viene trovato), ma se lo esegui su server il file D:\temp\prova.zip sul disco del server non esiste e ti da errore (per ovvie ragioni visto che non è stato salvato ma si strova sul client).
Se ti servono maggiori informazioni prova a guardare questo link:
http://support.microsoft.com/kb/323245/en-us
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
Mikyct86
Profilo
| Junior Member
81
messaggi | Data Invio:
sab 7 giu 2008 - 10:24
Ok ho capito.
Ma non riesco a inviare un file sul server.mi dice sempre accesso negato cosa posso fare?
Il mio codice è il seguente:
Public Sub SendViaFtp()
Try
Dim FileName() As String
FileName = FileUpload1.FileName.Split(".")
If FileName(FileName.Length - 1) <> "jpg" Then
Utilities.WriteAlert("Formato File non accettato")
Exit Sub
End If
Dim localpath As String
localpath = Path.GetFullPath(FileUpload1.PostedFile.FileName)
Dim fn As String = System.IO.Path.GetFileName(FileUpload1.PostedFile.FileName)
Dim SaveLocation As String = Server.MapPath("images") & "\" & fn
Try
FileUpload1.PostedFile.SaveAs(SaveLocation)
Response.Write("The file has been uploaded.")
Catch Exc As Exception
Response.Write("Error: " & Exc.Message)
Exit Sub
End Try
localpath = SaveLocation
Dim RemotePath As String
RemotePath = "/salemi.biz/app_themes/salemi/images/categorie/cat_" & DropDownList1.SelectedValue & "/prod_" & txtProdottoID.Text
If (FileUpload1.HasFile) Then
Dim file_size = FileUpload1.PostedFile.ContentLength
If file_size > 0 Then
objFtp.UseSSL = False
objFtp.UploadFile2(RemotePath, localpath, ".jpg")
Utilities.WriteAlert("invio Eseguito con successo")
End If
End If
Catch ex As Exception
Utilities.WriteAlert(ex.Message)
End Try
End Sub
Ps:Devo inviare un file da un sito di amministrazione (una foto ad esempio) al sito principale.
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
sab 7 giu 2008 - 12:22
Il problema dei permessi va gestito su windows. Bisogna assegnare i permessi di scrittura sulla cartella in cui vai a salvare i file.
Guarda questo link:
http://support.microsoft.com/?scid=kb%3Bit%3B323245&x=19&y=12
Se vai alla sezione: "Creazione della directory Data" ti spiega cosa fare per assegnare i permessi
Marco
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
Mikyct86
Profilo
| Junior Member
81
messaggi | Data Invio:
sab 7 giu 2008 - 13:00
Grazieeeeeeeeeeeeeeeeeeeeee!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Torna su
Stanze Forum
Elenco Threads
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 !