From: larry_schwartz on
I have JPGs stored in BLOBs. I have several lines of code to retrieve the JPG
put it on the server. The code to download the BLOB ocurrs right before the
IMG tag used to display it in my CFM page. Is there is a way to make sure the
code to retrieve/download the BLOB has finished executing (i.e., the JPG has
made it to the server) before the IMG tag tries to display the JPG?

To ask a different way -- Is there a way to have CF "stand still" until the
desired lines of code have finished executing?

From: Ian Skinner on
larry_schwartz wrote:
> To ask a different way -- Is there a way to have CF "stand still" until the
> desired lines of code have finished executing?
>

Well there are ways to put a thread to sleep with ColdFusion. In CF8
there are tags|functions to control this, for previous versions you will
need to create and call a Java object. A quick Google would show you
the code.

[b]But you do not need to do that in this case.[/b]

ColdFusion is [b]NOT[/b] going to ever process the <img...> tag. That
is an HTML tag, not CFML tag and it is going to be processed by a
browser on the client. The client browser does not get the response
until ColdFusion is completely done building the entire response and
sends it to the client.

In fact, by the time the browser has got the request and is requesting
that <img...> file, ColdFusion has moved on and is working on a
completely new request.

From: larry_schwartz on
I'm not explaining myself properly.

I'm in CF8.

I've done Google searches, but either I'm missing an answer that's in my face
or I don't see how to do what I need.

To better explain my situation:

I have a CFM template.

It has an IMG tag. It refers to a JPG witha generiic name that does not yet
exist.

In the CFM template, right before the IMG tag, is code to: Hit the database
and retrieve a BLOB, then write that BLOB with the generic filename to the
place the IMG tag refers to.

There *seems* to be some miscoordination going on. Maybe not, but it seems
so. It seems the HTML is being served to the browser before the file is
completely retrieved and written to disk.

So, I'm wondering if there's a way to keep CF from "moving on" and serving the
HTML to the browser until it knows the file is retrieved and written to disk.

Or, does CF already do this? Meaning my problem lies elsewhere.

Thanks.


From: edgriffiths on
is there a reason why the JPG filename has to be generic?

if not, why not point the IMG tag at a CFM script that:
1. retrieves the JPG BLOB data from the DB
2. uses CFCONTENT to return the BLOB data as JPG mimetype?

<img src="myJpgReader.cfm?imgID=12345">


From: Ian Skinner on
larry_schwartz wrote:
>
> So, I'm wondering if there's a way to keep CF from "moving on" and serving the
> HTML to the browser until it knows the file is retrieved and written to disk.
>

As I mentioned there are ways to put the current thread to sleep in
ColdFusion. IIRC, CF8 has tags or functions to do this now. If not, or
for earlier versions of CFMX, you can use a Java thread object to sleep
the thread.

Also you could create a file watcher that confirms that the file is
completely written before moving on. Search for an article titled
"Directory Watcher Dangers - A Follow-Up." It spells out how to create
a while loop that will wait until I file is completely written before
moving on with processing.

>
> Or, does CF already do this? Meaning my problem lies elsewhere.

That would be my first thought. I would think that since ColdFusion is
going to completely process the entire response before sending anything
to the browser. Then the browser is going to have to render the
received response to find the <img...> tag. Then it makes a new request
to get the <img...> file. I would think that this file would long be
written and ready and waiting.

You say you are using a generic name? Is this name getting reused
and|or replaced from request to request? If you follow the implications
of the above data flow, you can't easily reuse a 'generic' file name
that is shared between many requests without a strong possibility for
data sharing and|or race conditions. Could this be part of the problem?
 |  Next  |  Last
Pages: 1 2
Prev: Insert # into database
Next: CFGRID Filter