|
.net
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
context.Response.OutputStream.Write(buffer, 0, count) questionsAfter this is run the browser opens a file-save dialog box for saving the file. I wonder how it knows I want the file saved? But more important, the dialog box has as the default file name the name of this ashx file. I'd like to make that name more meaningfull but don't know how it gets set. I'm looking for a Response.Write but don't find one. Maybe that why the funny default filename? Got a clue as to how that gets set? Also, I see the content.Request below. Looks like a chance for the user to request different size images. But I don't see anything happening when I run the code! Do you know what that code should be accomplishing? I read the help for IHttpHandler ProcessRequest but that didn't help me Thanks for any help at all Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest ' Set up the response settings context.Response.ContentType = "image/jpeg" context.Response.Cache.SetCacheability(HttpCacheability.Public) context.Response.BufferOutput = False ' Setup the Size Parameter Dim size As PhotoSize = PhotoSize.Original Select Case context.Request.QueryString("Size") Case "S" size = PhotoSize.Small Case "M" size = PhotoSize.Medium Case "L" size = PhotoSize.Large Case Else size = PhotoSize.Original End Select ' Setup the PhotoID Parameter Dim id As Int32 = 1 Dim stream As IO.Stream = Nothing If ((Not (context.Request.QueryString("PhotoID")) Is Nothing) _ AndAlso (context.Request.QueryString("PhotoID") <> "")) Then id = [Convert].ToInt32(context.Request.QueryString("PhotoID")) stream = PhotoManager.GetPhoto(id, size) Else id = [Convert].ToInt32(context.Request.QueryString("AlbumID")) stream = PhotoManager.GetFirstPhoto(id, size) End If ' Get the photo from the database, if nothing is returned, get the default "placeholder" photo If (stream Is Nothing) Then stream = PhotoManager.GetPhoto(size) End If ' Write image stream to the response stream Dim buffersize As Integer = (1024 * 16) Dim buffer() As Byte = New Byte((buffersize) - 1) {} Dim count As Integer = stream.Read(buffer, 0, buffersize) Do While (count > 0) context.Response.OutputStream.Write(buffer, 0, count) count = stream.Read(buffer, 0, buffersize) Loop End Sub Here you go
http://support.microsoft.com/kb/260519/EN-US/ Basically this is the line you need to add Response.AddHeader "content-disposition","attachment; filename=fname.ext" where fname.ext is the file name you want it to be.... George. Show quoteHide quote "AAaron123" <aaaron***@roadrunner.com> wrote in message news:eo3v0LURJHA.1164@TK2MSFTNGP03.phx.gbl... > trying to understand the below shown code. > After this is run the browser opens a file-save dialog box for saving the > file. > I wonder how it knows I want the file saved? > > But more important, the dialog box has as the default file name the name > of this ashx file. > > I'd like to make that name more meaningfull but don't know how it gets > set. I'm looking for a Response.Write but don't find one. Maybe that why > the funny default filename? > > Got a clue as to how that gets set? > > Also, I see the content.Request below. Looks like a chance for the user to > request different size images. But I don't see anything happening when I > run the code! > > Do you know what that code should be accomplishing? > > I read the help for IHttpHandler ProcessRequest but that didn't help me > > Thanks for any help at all > > Sub ProcessRequest(ByVal context As HttpContext) Implements > IHttpHandler.ProcessRequest > > ' Set up the response settings > > context.Response.ContentType = "image/jpeg" > > context.Response.Cache.SetCacheability(HttpCacheability.Public) > > context.Response.BufferOutput = False > > ' Setup the Size Parameter > > Dim size As PhotoSize = PhotoSize.Original > > Select Case context.Request.QueryString("Size") > > Case "S" > > size = PhotoSize.Small > > Case "M" > > size = PhotoSize.Medium > > Case "L" > > size = PhotoSize.Large > > Case Else > > size = PhotoSize.Original > > End Select > > ' Setup the PhotoID Parameter > > Dim id As Int32 = 1 > > Dim stream As IO.Stream = Nothing > > If ((Not (context.Request.QueryString("PhotoID")) Is Nothing) _ > > AndAlso (context.Request.QueryString("PhotoID") <> "")) Then > > id = [Convert].ToInt32(context.Request.QueryString("PhotoID")) > > stream = PhotoManager.GetPhoto(id, size) > > Else > > id = [Convert].ToInt32(context.Request.QueryString("AlbumID")) > > stream = PhotoManager.GetFirstPhoto(id, size) > > End If > > ' Get the photo from the database, if nothing is returned, get the default > "placeholder" photo > > If (stream Is Nothing) Then > > stream = PhotoManager.GetPhoto(size) > > End If > > ' Write image stream to the response stream > > Dim buffersize As Integer = (1024 * 16) > > Dim buffer() As Byte = New Byte((buffersize) - 1) {} > > Dim count As Integer = stream.Read(buffer, 0, buffersize) > > > Do While (count > 0) > > context.Response.OutputStream.Write(buffer, 0, count) > > count = stream.Read(buffer, 0, buffersize) > > > Loop > > End Sub > > That's interesting, because the code did not contain that statement, as the
site suggested it should. And it worked except for the crazy filename in the dialog box. Do you think the context.Response.ContentType = "image/jpeg" line caused the dialog box to open? I see in the code lines like: zz=context.Request.QueryString("Size") So, just to see, I tried: Dim s As String = context.Request.QueryString("Filename") which of course doesn't work. Am I close? Is there something that does work to get the filename? Thanks for the info Show quoteHide quote "George" <noem***@comcast.net> wrote in message news:%23ADL4uURJHA.3932@TK2MSFTNGP02.phx.gbl... > Here you go > http://support.microsoft.com/kb/260519/EN-US/ > > Basically this is the line you need to add > Response.AddHeader "content-disposition","attachment; filename=fname.ext" > > > where fname.ext is the file name you want it to be.... > > George. > > > "AAaron123" <aaaron***@roadrunner.com> wrote in message > news:eo3v0LURJHA.1164@TK2MSFTNGP03.phx.gbl... >> trying to understand the below shown code. >> After this is run the browser opens a file-save dialog box for saving the >> file. >> I wonder how it knows I want the file saved? >> >> But more important, the dialog box has as the default file name the name >> of this ashx file. >> >> I'd like to make that name more meaningfull but don't know how it gets >> set. I'm looking for a Response.Write but don't find one. Maybe that why >> the funny default filename? >> >> Got a clue as to how that gets set? >> >> Also, I see the content.Request below. Looks like a chance for the user >> to request different size images. But I don't see anything happening when >> I run the code! >> >> Do you know what that code should be accomplishing? >> >> I read the help for IHttpHandler ProcessRequest but that didn't help me >> >> Thanks for any help at all >> >> Sub ProcessRequest(ByVal context As HttpContext) Implements >> IHttpHandler.ProcessRequest >> >> ' Set up the response settings >> >> context.Response.ContentType = "image/jpeg" >> >> context.Response.Cache.SetCacheability(HttpCacheability.Public) >> >> context.Response.BufferOutput = False >> >> ' Setup the Size Parameter >> >> Dim size As PhotoSize = PhotoSize.Original >> >> Select Case context.Request.QueryString("Size") >> >> Case "S" >> >> size = PhotoSize.Small >> >> Case "M" >> >> size = PhotoSize.Medium >> >> Case "L" >> >> size = PhotoSize.Large >> >> Case Else >> >> size = PhotoSize.Original >> >> End Select >> >> ' Setup the PhotoID Parameter >> >> Dim id As Int32 = 1 >> >> Dim stream As IO.Stream = Nothing >> >> If ((Not (context.Request.QueryString("PhotoID")) Is Nothing) _ >> >> AndAlso (context.Request.QueryString("PhotoID") <> "")) Then >> >> id = [Convert].ToInt32(context.Request.QueryString("PhotoID")) >> >> stream = PhotoManager.GetPhoto(id, size) >> >> Else >> >> id = [Convert].ToInt32(context.Request.QueryString("AlbumID")) >> >> stream = PhotoManager.GetFirstPhoto(id, size) >> >> End If >> >> ' Get the photo from the database, if nothing is returned, get the >> default "placeholder" photo >> >> If (stream Is Nothing) Then >> >> stream = PhotoManager.GetPhoto(size) >> >> End If >> >> ' Write image stream to the response stream >> >> Dim buffersize As Integer = (1024 * 16) >> >> Dim buffer() As Byte = New Byte((buffersize) - 1) {} >> >> Dim count As Integer = stream.Read(buffer, 0, buffersize) >> >> >> Do While (count > 0) >> >> context.Response.OutputStream.Write(buffer, 0, count) >> >> count = stream.Read(buffer, 0, buffersize) >> >> >> Loop >> >> End Sub >> >> >
Other interesting topics
SqlMembershipProvider database reusage
Setting DropDownList SelectedValue Role Based Connections Using SSPI / Impersonating Original Caller How to delete IIS metabase? Viewstate Encryption Insert Row in GridView using SqlDataSource and update to database ? Double Hop Network Issue HttpHandler for site Gridview formatting - 2nd post Web sites vs web applications |
|||||||||||||||||||||||