> Hi,
> 
> I have some content stored within a database, which I want to be saved as a f
> ile on the user's system when requested. Currently, I generate a temporary fi
> le (timestamp_fileid.tex) and use a cron job to clean up the directory every 
> 30 minutes:

Using timestamp is a poor technique for forming unique filenames.
Someday, you *WILL* get two requests in the same second.  Use
File::Temp.  Even better -- don't use a file at all.  I generate PDF
and Excel spreadsheets all the time, and I never write them out to files.

> 
> if ($texcontent) {
>         my $texfile = texer($texcontent, $id);
>         print qq{<a class="image" href="../tmp/$texfile" target="_self"><img 
> src="../gifs/latex.jpeg" alt="latex_version" width="70" height="37" border="0
> " /></a>};
>     }
> 
> sub texer {
>     my ($texcontent, $page_id) = @_;
>     my ($page_id_safe) = $page_id =~ /(.+)/;
>     my $filename = time . "_$page_id_safe.tex";
>     chdir "../tmp";
>     open (FILE, "> $filename") or die "Cannot open file for writing: $!";
>     print FILE $texcontent;
>     close (FILE);
>     chdir "../cgi-bin";
>     return $filename;
> }
> 
> How can I make the user's browser
> 
> a) save the file instead of just printing its content to the screen (as with 
> the header text/plain), so I do not need to use a temporary file

In your headers, you want to put something like

Content-type: application/x-tex
Content-disposition: attachment; filename="custom-file.tex"

> 
> b) use a certain filename when saving the file instead of displaying a saving
>  dialog?

The browswer will *ALWAYS* open a dialog, but it should be `primed'
with the name you have suggested.

> 
> Thanks,
> 
> Jan

-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
        Lawrence Statton - [EMAIL PROTECTED] s/aba/c/g
Computer  software  consists of  only  two  components: ones  and
zeros, in roughly equal proportions.   All that is required is to
sort them into the correct order.

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>

Reply via email to