Asp.Net 4.0 e AjaxFileUpload

mercoledì 02 aprile 2014 - 23.37
Tag Elenco Tags  VB.NET  |  .NET 4.0

sanghino Profilo | Junior Member

Salve,
la domanda che vorrei porre è per togliermi un dubbio più che per risolvere un problema.
Ho scaricato l'ultima versione di AjaxToolKit tramite Nuget e stavo provando l'uso di alcuni di questi componenti. Nello specifico mi interessava capire il funzionamento di AjaxFileUpload. La documentazione on-line è tutto escluso che chiara. In ogni modo sono riuscito ad implementare una semplice pagina per fare il mio test.
Ho piazzato il controllo insieme allo ScriptManager, ho modificato il web.config includendo la sezione handlers in maniera adeguata. In alcuni esempi veniva citata anche la necessità di inserire nel tag la proprietà seguente:
OnUploadComplete="AjaxFileUpload1_UploadComplete"
Facendo questo però ottengo che il metodo UploadComplete viene eseguito due volte (e la seconda restituiva un errore noon trovando più il file appena caricato nella cartella temporanea essendo già stato spostato nel momento della chiamata a AjaxFileUpload1.SaveAs).
La domanda è: quando si deve usare quella proprietà ?

Grazie
Sanghino
--------------------------
www.extrageek.com

algraps Profilo | Junior Member

Ciao,

http://stephenwalther.com/archive/2012/05/01/ajax-control-toolkit-may-2012-release
http://www.mikeborozdin.com/post/AJAX-File-Upload-in-ASPNET-with-the-AsyncFileUpload-Control.aspx
http://forums.asp.net/t/1810838.aspx

UploadComplete viene eseguito quando l'upload e' completato.
Il tuo problema sembra dovuto al reload della pagina col PostBack... Riusciresti a postare il tuo esempio?

Grazie
Alessandro

A.G.
http://nothingnessit.wordpress.com/

sanghino Profilo | Junior Member

Intanto grazie per la risposta.
La serie di post/articoli che mi segnali avevo già avuto modo di leggerli, e anche in quelli non trovo la spiegazione al mio dubbio. Anzi, proprio in questi articoli trovo riferimenti alla proprietà e alle modifiche da applicare a web.config, solo che queste inducono il sistema ad eseguire due volte il metodo.
Ora, togliendo dal tag la proprietà citata, si torna in una situazione normale di una sola esecuzione. Mi chiedo quale sia lo scenario inverso: quando devo lasciare la proprità OnUploadCompleted nel tag ? In assenza di quale configurazione ? Forse dell'handler ?

Questo non sono riuscito a ricavarlo dalle decine di post trovati e letti ...

Grazie.
Sanghino
--------------------------
www.extrageek.com

algraps Profilo | Junior Member

Ciao,
il comportamento e' veramente strano.. Riusciresti a "postare" il codice? Cosi' lo controlliamo...

Ciao
Al.
A.G.
http://nothingnessit.wordpress.com/

sanghino Profilo | Junior Member

Certo nessun problema. Quella che segue è la versione funzionante (a fondo pagina quella che da problemi):

Questo è testUpload.aspx:

<ajaxToolkit:ToolkitScriptManager runat="server" ID="ScriptManager1"></ajaxToolkit:ToolkitScriptManager>

<ajaxToolkit:AjaxFileUpload ID="AjaxFileUpload1" runat="server" ThrobberID="myThrobber" AllowedFileTypes="jpg,bmp,gif,jpeg" MaximumNumberOfFiles="1" />

Mentre questo è il codice di testUpload.aspx.vb:

Partial Class testUpload
Inherits System.Web.UI.Page

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load

End Sub

Protected Sub AjaxFileUpload1_UploadComplete(sender As Object, e As AjaxControlToolkit.AjaxFileUploadEventArgs) Handles AjaxFileUpload1.UploadComplete
Dim filePath As String = "~/Public/" + e.FileName
AjaxFileUpload1.SaveAs(Server.MapPath(filePath))
End Sub
End Class

Seguendo i suggerimenti di vari post all'inizio avevo scritto nella pagina testUpload.aspx (la parte di codice rimane uguale):

<ajaxToolkit:ToolkitScriptManager runat="server" ID="ScriptManager1"></ajaxToolkit:ToolkitScriptManager>

<ajaxToolkit:AjaxFileUpload ID="AjaxFileUpload1" runat="server" ThrobberID="myThrobber" AllowedFileTypes="jpg,bmp,gif,jpeg" MaximumNumberOfFiles="1" OnUploadComplete="AjaxFileUpload1_UploadComplete" />

Da quello che ho capito io mi sembra evidente che AjaxFileUpload1_UploadComplete sia chiamato in maniera esplicita e per questo eseguito una prima volta correttamente e poi a seguire la chiamata "forzata" da me che non trova più la risorsa nella cartella temporanea da salvare e che quindi genera l'errore.
Alla luce di ciò riformulo la domanda: esistendo la versione esplicita di chiamata per l'evento "OnUploadComplete" qual'è lo scenario quando questa chiamata diventa necessaria ?

Spero di essere stato chiaro ...

Grazie
Sanghino
--------------------------
www.extrageek.com



Add-on Per l'upload ancora nessuna soluzione ... in compenso ho scoperto che non posso usare AjaxControlToolkit in produzione in quanto il sito, ospitato da Aruba, è impostato su TrustLevel Medium e ACT supporta solo il FULL .... workaround conosciuti ?!?

Grazie ancora !!!
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5