So che l'argomento non è nuovo ma anche guardando negli arretrati e in rete non ne esco:
Ho un updatepanel che contiene un formview (agganciato a un datasource con i suoi insert/update nella parte aspx) che contiene a sua volta un controllo fileupload.
Ho 2 problemi:
Numero 1 - lettura del nomefile per salvataggio dell'info in db
Nell'evento inserting e updating del datasource lanciavo una funzione che andava a leggere il nome del file ed a valorizzare il parametro per l'insert/update.
Grazie all'updatepanel il mio fileupload risulta non avere mai files (hasfiles è sempre false).codice:Protected Sub nomiallegati(ByVal e As System.Web.UI.WebControls.SqlDataSourceCommandEventArgs, ByVal Optional tor As String = "R") Dim nomefile = "" ....... Dim flup As FileUpload = FormView2.FindControl("FileUpload1") If flup.HasFile Then Dim NomeCompleto = flup.FileName Dim Delim1 = InStrRev(NomeCompleto, "/") Dim Delim2 = InStrRev(NomeCompleto, "\") If Delim1 > Delim2 Then nomefile = Right(NomeCompleto, Len(NomeCompleto) - Delim1) Else nomefile = Right(NomeCompleto, Len(NomeCompleto) - Delim2) End If e.Command.Parameters("@rk_allegato").Value = Trim(Right(nomefile, 100)) End If End Sub
In rete ho trovato di tutto e ho anche provato tutto ma senza capirci niente.
Ho letto che il form dev'essere di tipo multipart-formdata perciò nel load di pagina ho aggiunto.... senza risultati.Page.Form.Attributes.Add("enctype", "multipart/form-data")
Poi ho letto che il controllo dev'essere aggiunto ai triggers dell'updatepanel (ma perchè poi?) e allora ho aggiunto anche
ma questo oltre a non dare risultati mi porta un eccezione più o meno cosìfupl = FormView2.FindControl("FileUpload1")
ScriptManager.GetCurrent(Me).RegisterPostBackContr ol(fupl)Insomma sono ancora al palo e non riesco a tirar fuori il nome del file indicato nel fileupload... mi serve vs graditissimo aiuto.Control with ID 'FileUpload1' being registered through RegisterAsyncPostBackControl or RegisterPostBackControl must implement either INamingContainer, IPostBackDataHandler, or IPostBackEventHandler.
Numero 2 - caricamento del file
Non so se risolvendo il problema 1 si risolva anche questo comunque la mia tecnica era di fare l'insert/update dei dati del formview e poi, negli eventi inserted e updated del datasource, lanciare la funzione seguente che fisicamente carica i files sul server
Con l'updatepanel il gioco non funziona più perchè i Request.files, guarda un po', sono sempre vuoti... ma dove diavolo vanno a finire??codice:Protected Sub caricafile(ByVal conto As String, ByVal codice As String, ByVal Optional tor As String = "R") ........... 'prendo i file allegati e li carico nella apposita directory Try Dim hfc As HttpFileCollection = Request.Files For i As Integer = 0 To hfc.Count - 1 Dim hpf As HttpPostedFile = hfc(i) If hpf.ContentLength > 0 Then hpf.SaveAs(ConfigurationManager.AppSettings("uplpath") & Path.GetFileName(hpf.FileName)) End If Next Catch ex As Exception ' Handle your exception here End Try End Sub
Si noti che l'uplaod devo farlo assolutamente dopo aver eseguito l'update/insert.

Rispondi quotando