Try removing content-length altogether. This is one of the major issues we had, and this was probably the biggest reason we went to PHP other than text/encoding. If Robert is saying that the header should be put in automatically, then great, but it didn't back when. We had the issue that some browsers required the content-length, and then on top of that, it must be exact to the byte. We found that using varsize or @length from witango would sometimes be off by 1 byte. It happened about 1 every few thousand images. So this one image would always show broken, due to witango being off by 1 byte in length. This would happen on other sites with binary data when we used to store PDF files in the db, but it was much more rare. Eventpix was serving millions of images, so we saw it more frequently. At the end of the day, the resolution was to NOT depend on witango for the content-length. We did this in one of several ways. This probably has to do with the fact that witango defaults to dealing with strings, and not binary data, and that is why in lower level programming languages you have methods for determining lengths of binary data vs string data. (strlen vs strlenb or length() vs char_length() in mysql)
1. upon retrieval of the data from the db, where the name of the blog field is "data", do this: select length(data) as "content-length", data from table; and use the "content-length" value from mysql instead of any witango calc on the binary data. 2. If retrieving the data from disk, ask the operating system for its length in bytes. 3. We were using a desktop application to populate the data, and we found the best way was to use a proper binary string length function and we would insert into the blog with a field for its length. so we knew we always had the proper content-length in the database. HTH. PS. here is an interesting discussion on this issue, and why at least before, we could not rely on witango for this, because it had no method for length of a binary string. http://bytes.com/topic/php/answers/653733-binary-string-length -- Robert Garcia BigHead Technology 15520 Coutelenc Rd Magalia, Ca 95954 ph: 530.645.4040 x222 fax: 530.645.4040 rgar...@bighead.net - http://bighead.net/ Sent with Sparrow On Tuesday, March 29, 2011 at 2:54 PM, WebDude wrote: > I appreciate the help so far. I feel I am 95% there. > > I have tried this with these 2 header rewrites (all on one line, of > course)... > > <@purgeresults><@ASSIGN local$httpHeader VALUE="HTTP/1.0 200 > OK<@crlf>MIME-Version: 1.0<@crlf>Content-Type: > application/jpg<@CRLF>Content-Disposition: attachment; filename=<@VAR > filename><@CRLF><@USERREFERENCECOOKIE><@CRLF>"><@VAR FileData scope="local"> > > > > > <@assign name="httpHeader" scope="local" value="HTTP/1.0 200 > OK<@crlf>MIME-Version: 1.0<@crlf>Content-type: > application/jpg<@crlf>Content-Disposition: attachment; filename=<@VAR > filename><@crlf>Content-Length: <@VARINFO NAME="FileData" > size><@crlf><@crlf>"><@purgeresults><@VAR FileData scope="local"> > > I am assigning the filename from a search and writing the data to FileData > > It actually finds the filename and downloads the file. The problem is that > the file seems to be corrupt. It will not display in a browser and when I > try to open it in PhotoShop I get the following error (I tried this in > multiple browsers).... > > "Could not open the document because a JPEG marker segment length is too > short (the file may be truncated or incomplete). > > Is there something else I may be missing? > > I appreciate the help! > > > > > -----Original Message----- > From: Robert Shubert [mailto:rshub...@tronics.com] > Sent: Tuesday, March 29, 2011 1:57 PM > To: Witango-Talk@witango.com > Subject: RE: Witango-Talk: Forcing jpg Download > > Yes - you have that correct. > > -----Original Message----- > From: WebDude [mailto:webd...@cipromo.com] > Sent: Tuesday, March 29, 2011 2:58 PM > To: Witango-Talk@witango.com > Subject: RE: Witango-Talk: Forcing jpg Download > > What do you mean by "Then you dump out the contents of the jpeg AFTER the > header." Do I read the jpg using the Read File Action as in what the other > Robert suggested? Is that what the <@VAR Request$FileData> is? > > Mmmmm... I'll give it a shot... > > > > > -----Original Message----- > From: Robert Garcia [mailto:rgar...@bighead.net] > Sent: Tuesday, March 29, 2011 1:28 PM > To: Witango-Talk@witango.com > Cc: Robert Shubert > Subject: Re: Witango-Talk: Forcing jpg Download > > We have done that many times before in witango. That is the correct header > you need to use, and attachment is the correct way. However, it looks like > you are trying to put the contents of the file in the filename part, that > header just takes the filename, and it should end in JPG or JPEG, or match > the mime of the content with the extension, or it may not work on all > browsers. Then you dump out the contents of the jpeg AFTER the header. Here > is an example I found from a TAF that I know we had working: > > <@assign name="httpHeader" scope="request" value="HTTP/1.0 200 > OK<@crlf>MIME-Version: 1.0<@crlf>Content-type: > application/download<@crlf>Content-Disposition: attachment; > filename=downloadreport.xls<@crlf>Content-Length: <@length > @@request$FileData><@crlf><@crlf>"><@purgeresults><@VAR Request$FileData> > > It is important to know that you must NOT have ANY returns in this results > page where you use this code, it should be on one line. We do this in other > places with JPEGs, but we use image/jpeg for content-type, and a variable > usually for filename. Content-length is also important, but can be a big > buggy in witango. > > On 3/29/2011 11:09 AM, Robert Shubert wrote: > > In that case, I think you have the header correct. What you need to do > > afterwards is use a Read File Action to bring the content of the JPEG > > into Witango and then simply display it as the response. It's > > important that you don't get any additional characters (like extra > > returns or spaces in the result) > > > > Robert > > > > -----Original Message----- > > From: WebDude [mailto:webd...@cipromo.com] > > Sent: Tuesday, March 29, 2011 1:49 PM > > To: Witango-Talk@witango.com > > Subject: RE: Witango-Talk: Forcing jpg Download > > > > <@COLUMN "images.LargerImage"> is the name of the file. > > > > > > > > > > -----Original Message----- > > From: Robert Shubert [mailto:rshub...@tronics.com] > > Sent: Tuesday, March 29, 2011 12:06 PM > > To: Witango-Talk@witango.com > > Subject: RE: Witango-Talk: Forcing jpg Download > > > > What is in the database column<@COLUMN "images.LargerImage">? Is this > > the name of the image file or the binary JPEG data? > > > > Robert > > > > -----Original Message----- > > From: WebDude [mailto:webd...@cipromo.com] > > Sent: Tuesday, March 29, 2011 12:45 PM > > To: Witango-Talk@witango.com > > Subject: Witango-Talk: Forcing jpg Download > > > > PHP has a handy header rewrite for forcing a jpg download. I was > > wondering if anyone has ever done this in Witango. I've been able to > > get this to work on IIS by changing the directory header, the problem > > being is that I have 2 sites that reference the same images and one > > needs to force a download and the other to view the image in a browser > > (same images in the same directories). > > > > I've been dabbling but can't seem to get it to work right. Of course > > when I add header change to the top of the taf file, it tries to > > download the taf file itself rather then the jpg file. This is stupid > > I know, but what is the best way to force a download of a jpg and get > > it to work? This is what I have so far. Am I missing something > > fundamental > in trying to do this? > > > > <@purgeresults><@ASSIGN local$httpHeader > > VALUE="Content-Type:application/jpg<@CRLF>Content-Disposition: > > attachment, filename='<@COLUMN > > "images.LargerImage">'<@CRLF>readfile('<@COLUMN > > "images.LargerImage">')<@CRLF><@USERREFERENCECOOKIE><@CRLF>"> > > > > Thanks for your thoughts... > > > > > > > > WebDude > > > > > > > > > > ---------------------------------------- > > > > To unsubscribe from this list, please send an email to > > lists...@witango.com with "unsubscribe witango-talk" in the body. > > > > > > > > ---------------------------------------- > > > > To unsubscribe from this list, please send an email to > > lists...@witango.com with "unsubscribe witango-talk" in the body. > > > > > > > > ---------------------------------------- > > > > To unsubscribe from this list, please send an email to > lists...@witango.com with "unsubscribe witango-talk" in the body. > > > > > > > > ---------------------------------------- > > > > To unsubscribe from this list, please send an email to > lists...@witango.com with "unsubscribe witango-talk" in the body. > > -- > Robert Garcia > BigHead Technology > 15520 Coutelenc Rd > Magalia, Ca 95954 > ph: 530.645.4040 x222 fax: 530.645.4040 > rgar...@bighead.net - http://bighead.net/ > > > > > ---------------------------------------- > > To unsubscribe from this list, please send an email to lists...@witango.com > with "unsubscribe witango-talk" in the body. > > > > ---------------------------------------- > > To unsubscribe from this list, please send an email to lists...@witango.com > with "unsubscribe witango-talk" in the body. > > > > ---------------------------------------- > > To unsubscribe from this list, please send an email to lists...@witango.com > with "unsubscribe witango-talk" in the body. > > > > ---------------------------------------- > > To unsubscribe from this list, please send an email to lists...@witango.com > with "unsubscribe witango-talk" in the body. > ---------------------------------------- To unsubscribe from this list, please send an email to lists...@witango.com with "unsubscribe witango-talk" in the body.