<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Feb 24, 2014 at 2:42 PM, Mike Miller <span dir="ltr"><<a href="mailto:mbmiller+l@gmail.com" target="_blank">mbmiller+l@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class=""><div class="h5">On Mon, 24 Feb 2014, Michael Moore wrote:<br>


<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
This reminds me to ask about something I've been thinking of doing with photos on web pages and Apache cgi-bin.  I have photos on web pages with this kind of layout:<br>
<br>
</blockquote>
<br>
<a href="http://genetsim.org/Seoul/20100605_Seoul/" target="_blank">http://genetsim.org/Seoul/<u></u>20100605_Seoul/</a><br>
<br>
I wrote scripts that compile pages from a few basic elements -- a collection of image files in a directory, one file with captions, another file with intro info, another with title.<br>
<br>
What I'd like to do is add a link that allows the user to click on it and download the whole works in a .zip file.  I think the zip file can be written on the fly instead of storing a bunch of .zip files on the web server, doubling the space used by photos.<br>


<br>
Have any of you done something like this using cgi-bin?  It seems doable but it has been awhile since I've done anything like this.<br>
</blockquote>
<br>
<br>
I like to make a temp file and send that so that I can indicate the file size to the user. If you don't indicate a file size the progress bar in their download manager just goes back and forth.<br>
<br>
However, if you want to just send a zip file which is created on the fly, you can do something as simple as this:<br>
<br>
I save and tried this as a CGI script and it worked. The '-' tells zip to send the zip file to stdout, which in a CGI scenario means to send it to the browser.<br>
<br>
<br>
<br>
#!/bin/bash<br>
<br>
echo "Content-type: application/octet-stream"<br>
echo "Content-Disposition: attachment; filename='mydownload.zip'"<br>
echo  ""<br>
<br>
zip -0 - /var/www/html/ziptest/*<br>
</blockquote>
<br>
<br></div></div>
Thanks for the tip, Michael.  I like the idea of sending a file size.  Do you think it would be OK to use the approximate file size I obain using this command:<br></blockquote><div><br></div><div>I don't think that will work. It's been a while since I played around with it, but I think if the actual size and the size you report are different some browser complain that the download might be corrupt. </div>

<div><br></div><div>If you have a temp file, you would need to get its size in bytes and then send the Content-Length header. </div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

$ du -sb "$DIR" | awk '{print $1}'<br>
<br>
That number is usually about 0.5% smaller than the .zip file size.  How do you report the filesize?<br>
<br>
On the other hand, making a temp file isn't a big deal.  I just don't want to store all the .zip files, one per directory.<br>
<br>
I guess I need to write the script so that it takes the directory name (with path) as an argument.</blockquote><div><br></div><div>You probably want to pass in some sort of download file name too, otherwise users end up with archive.zip, archive(1).zip, archive(2).zip and they're all for different directories. </div>

<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class=""><div class="h5"><br>
<br>
Mike<br>
______________________________<u></u>_________________<br>
TCLUG Mailing List - Minneapolis/St. Paul, Minnesota<br>
<a href="mailto:tclug-list@mn-linux.org" target="_blank">tclug-list@mn-linux.org</a><br>
<a href="http://mailman.mn-linux.org/mailman/listinfo/tclug-list" target="_blank">http://mailman.mn-linux.org/<u></u>mailman/listinfo/tclug-list</a><br>
</div></div></blockquote></div><br></div></div>