9 messaggi dal 18 giugno 2006
Ho il codice che vi riporto sotto che utilizzo per caricare e scaricare dei file su un server sql. La cosa che non riesco a capire è perchè dopo il download mi ritrovo accodato al file una parte di pagina master .aspx oltre al file stesso. Qualcuno sa darmi qualche spiegazione?
Vi rigrazio sin da ora per i vs. contributi.

===============================================================
'CODICE PER UPLOAD ================================================

Dim UpLdFilData As FileUpload = CType(Panel1.FindControl("FileToUpload"), FileUpload)
Dim UpLdFilAbs As TextBox = CType(Panel1.FindControl("FileAbstract"), TextBox)

If (UpLdFilData.HasFile) AndAlso Not UpLdFilAbs.Text.Equals("") Then
Try
Dim db As DataContext = New BonificheDataContext
' Get a typed table to run queries.
Dim TabRic As Table(Of DocData) = db.GetTable(Of DocData)()
' Data for the row to be inserted to database.
' Dim imageBytes(FileToUpload.PostedFile.InputStream.Length) As Byte
Dim imageBytes(UpLdFilData.PostedFile.InputStream.Length) As Byte
If (imageBytes.Length < 3072000) Then
FileToUpload.PostedFile.InputStream.Read(imageBytes, 0, imageBytes.Length)

Dim insData As New DocData With _
{
.TargetPtr = Convert.ToInt32(AllID.Text), _
.FileAbstract = FileAbstract.Text.Trim(), _
.FileName = System.IO.Path.GetFileName(FileToUpload.FileName).ToLower(), _
.MIME = FileToUpload.PostedFile.ContentType, _
.BinaryData = imageBytes, _
.DateTimeUploaded = DateTime.Now
}

TabRic.InsertOnSubmit(insData)
db.SubmitChanges()
gvAll.DataBind()
SetFocus(FormView1)
Else
MessageLabel.Text = "Le dimensioni del file superano il limite consentito di circa 3MB"
End If
Catch ex As Exception
MessageLabel.Text = ex.ToString
End Try
Else
Status.Text = "<b >Inserire i valori richiesti nella maschera.<b />"
BtnNewAll_ModalPopupExtender.Show()
End If


'CODICE PER DOWNLOAD ================================================

Dim db As DataContext = New BonificheDataContext
' Get a typed table to run queries.
Dim allAll As Table(Of DocData) = db.GetTable(Of DocData)()
' Query the database for the row to be updated.
Dim f = (From a In allAll Where a.ID = FileID AndAlso a.TargetPtr = AllID.Text).First()

Dim strm As Stream = New MemoryStream(f.BinaryData.ToArray())

Context.Response.Clear()
Context.Response.AddHeader("content-disposition", "attachment;filename=" + f.FileName + "")
Context.Response.ContentType = f.MIME
Context.Response.Charset = ""
Dim arrBytData() As Byte = f.BinaryData.ToArray
Dim msTimelineFile As MemoryStream = New MemoryStream()
msTimelineFile.Write(arrBytData, 0, arrBytData.Length)
msTimelineFile.WriteTo(Response.OutputStream)
MessageLabel.Text = "<b>Il file è stato scaricato.<b />"
Modificato da MaMon il 05 aprile 2012 13.37 -
Modificato da MaMon il 05 aprile 2012 13.48 -
Hai fatto una verifica di quanto ti risulta più lungo l'array di byte rispetto alla lunghezza originaria ?
9 messaggi dal 18 giugno 2006
L'originale cuba 167 KB (171.752 bytes),
dopo up e down load diventa 211 KB (217.024 bytes).

Ma grazie a questo controllo mi sono accorto di alcuni refusi nel codice del download, sembra che ora ho risolto introducendo questo codice:

Response.Clear()
Response.ContentType = f.MIME
Response.AddHeader("content-disposition", String.Format("attachment; {0}", f.FileName))
Response.BinaryWrite(f.BinaryData.ToArray())
Response.[End]()



Grazie ancora e Buona Pasqua a TUTTI VOI in MS e non!
Modificato da MaMon il 06 aprile 2012 12.02 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.