Consentire il caricamento di file

martedì 18 marzo 2008 - 16.11

86Marco Profilo | Expert

Salve ho scritto questo codice:

Public fileinput As HtmlInputFile
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)

Dim FileName_server As String
FileName_server = Path.GetFileName(fileinput.PostedFile.FileName)
fileinput.PostedFile.SaveAs("C:\Users\Marco\Desktop\Cartella\" & FileName_server)
Label1.Text = "File " & FileName_server & " caricato con successo."

End Sub

Ma mi restituisce questo errore:

Riferimento a un oggetto non impostato su un'istanza di oggetto.
Descrizione: Eccezione non gestita durante l'esecuzione della richiesta Web corrente. Per ulteriori informazioni sull'errore e sul suo punto di origine nel codice, vedere l'analisi dello stack.

Dettagli eccezione: System.NullReferenceException: Riferimento a un oggetto non impostato su un'istanza di oggetto.

Errore nel codice sorgente:


Riga 16:
Riga 17: Dim FileName_server As String
Riga 18: FileName_server = Path.GetFileName(fileinput.PostedFile.FileName)
Riga 19: fileinput.PostedFile.SaveAs("C:\Users\Marco\Desktop\Cartella\" & FileName_server)
Riga 20: Label1.Text = "File " & FileName_server & " caricato con successo."


File di origine: C:\Users\Marco\Desktop\sss\Default1.aspx Riga: 18

Analisi dello stack:


[NullReferenceException: Riferimento a un oggetto non impostato su un'istanza di oggetto.]
ASP.default1_aspx.Button1_Click(Object sender, EventArgs e) in C:\Users\Marco\Desktop\sss\Default1.aspx:18
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1746

Sapete dirmi da cosa è causato? in più in che modo posso ovviare al problema, potresti aiutarmi voi a inoltrarmi un codice che mi consenta di impostare il caricamento di un file in una determinata cartella?
Grazie

rossimarko Profilo | Guru

Io ho provato il tuo codice e funziona correttamente.
Secondo me il problema è dovuto al fatto che la variabile fileinput è nothing.

Potresti mandarci anche la dichiarazione che hai all'interno del file aspx?

86Marco Profilo | Expert

>Potresti mandarci anche la dichiarazione che hai all'interno
>del file aspx?
Cioè?

Non ho altro scritto nel file aspx

Ad ogni modo ti funziona correttamente? Cioè ti sposta correttamente un file che selezioni alla cartella di destinazione????

Grazie, aspetto risposte qualora tu possa...
Mille grazie ancora..
Marco

rossimarko Profilo | Guru

>>Potresti mandarci anche la dichiarazione che hai all'interno
>>del file aspx?
>Cioè?
>
>Non ho altro scritto nel file aspx
>
>Ad ogni modo ti funziona correttamente? Cioè ti sposta correttamente
>un file che selezioni alla cartella di destinazione????
>
>Grazie, aspetto risposte qualora tu possa...
>Mille grazie ancora..
>Marco

Nel file aspx non hai dichiarato un controllo input del tipo
<input type="file" id="fileinput" runat="server" />
?

Se la risposta è no il problema è proprio quello, non esiste un controllo sulla pagina e quindi non c'è un'associazione tra la variabile che hai inserito nel codice e il controllo. In questo caso l'errore che da è proprio quello che ottieni tu.

86Marco Profilo | Expert

CIao rossimarko.
H provato a riscrivere il codice e dovrebbe andare tutto bene... solo che mi viene fuori un altro errore, questo:

Accesso al percorso 'C:\inetpub\wwwroot\Sito\Dati\File Upload' negato.
Descrizione: Eccezione non gestita durante l'esecuzione della richiesta Web corrente. Per ulteriori informazioni sull'errore e sul suo punto di origine nel codice, vedere l'analisi dello stack.

Dettagli eccezione: System.UnauthorizedAccessException: Accesso al percorso 'C:\inetpub\wwwroot\Sito\Dati\File Upload' negato.

ASP.NET non è autorizzato ad accedere alla risorsa richiesta. Provare a concedere diritti di accesso alla risorsa all'identità di richiesta di ASP.NET. ASP.NET dispone di un'entità di processo di base (in genere {MACHINE}\ASPNET su IIS 5 o Network Service su IIS 6) che viene utilizzata se l'applicazione non esegue la rappresentazione. se l'applicazione esegue la rappresentazione tramite <identity impersonate="true"/>, l'identità sarà rappresentata dall'utente anonimo (in genere IUSR_MACHINENAME) o dall'utente autenticato che ha eseguito la richiesta.

Per concedere l'accesso a un file ad ASP.NET, fare clic su di esso con il pulsante destro del mouse in Esplora risorse, scegliere Proprietà e fare clic sulla scheda Sicurezza. Fare clic su "Aggiungi" per aggiungere l'utente o il gruppo appropriato. Evidenziare l'account ASP.NET e selezionare la casella relativa all'accesso desiderato.

Errore nel codice sorgente:


Riga 19: Dim serverdir As String
Riga 20: serverdir = Path.GetFileName(file1.PostedFile.FileName)
Riga 21: file1.PostedFile.SaveAs("C:\inetpub\wwwroot\Sito\Dati\File Upload")
Riga 22: Label1.Text = "Il file " & serverdir & " caricato con successo."
Riga 23:


File di origine: C:\inetpub\wwwroot\Sito\Dati\FileUpload.aspx Riga: 21

Analisi dello stack:


[UnauthorizedAccessException: Accesso al percorso 'C:\inetpub\wwwroot\Sito\Dati\File Upload' negato.]
System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +651
System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy) +1038
System.IO.FileStream..ctor(String path, FileMode mode) +64
System.Web.HttpPostedFile.SaveAs(String filename) +87
ASP.dati_fileupload_aspx.Button1_Click(Object sender, EventArgs e) in C:\inetpub\wwwroot\Sito\Dati\FileUpload.aspx:21
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1746

Comprendo benissimo che si tratta di un errore di autorizzazione... ma come posso fare per poter mandare file all'interno di quella cartella? Grazie mille come sempre

rossimarko Profilo | Guru


>ASP.NET non è autorizzato ad accedere alla risorsa richiesta.
>Provare a concedere diritti di accesso alla risorsa all'identità
>di richiesta di ASP.NET. ASP.NET dispone di un'entità di processo
>di base (in genere {MACHINE}\ASPNET su IIS 5 o Network Service
>su IIS 6) che viene utilizzata se l'applicazione non esegue la
>rappresentazione. se l'applicazione esegue la rappresentazione
>tramite <identity impersonate="true"/>, l'identità sarà
>rappresentata dall'utente anonimo (in genere IUSR_MACHINENAME)
>o dall'utente autenticato che ha eseguito la richiesta.
>


Che IIS stai usando? Il 5 (windows XP), il 6 (Windows 2003) o il 7 (windows vista)?

In base all'IIS che stai usando devi dare i permessi di scrittura all'utente che sta facendo girare l'applicazione (l'utente di default te lo riporta il messaggio di errore). Per farlo basta premere il tasto destro sulla cartella --> Property --> Security

86Marco Profilo | Expert

uso il 7 (windows vista).
COme devo fare quindi per consentire il caricamento? Cioè in che modo settare i permessi?? potresti essere + specifico per favore?
In più se questo sito lo devo mettere su un server web e quindi senza farlo girare su IIS come posso settare i permessi sulle cartelle?
Mille Grazie sei veramente molto gentile.
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5