I've got to agree. I wouldn't be zipping them either.
As for the post, its just one of my hobby horses. I've been doing it like
this for a long time now and it works really well. If you stop and think
about it, its a easy thing to do, its just not terribly obvious, and there's
lots of little gotchas that you may end up suffering over. The solution I've
shown should get you (and everyone else) over the majority of the hurdles.
Regards
Darren Tracey
Systems Analyst
HR Systems and FastTrack
Wealth and Corporate Systems
Suncorp
p: + 61 7 3232 4091 (x64091)
f: + 61 7 3232 4744
e: [EMAIL PROTECTED]
l: Lvl 3, 388 Queen St Brisbane QLD 4000
m: Suncorp IPC IT048, GPO Box 1453, Brisbane QLD 4000
> -----Original Message-----
> From: Chad Renando
> Sent: Tuesday, 30 August 2005 11:10 AM
> To: CFAussie Mailing List
> Subject: [cfaussie] Re: download site
>
> Dude, Darren, that has to be one of the most thorough posts I've seen!
>
> Not much to add to that... other then I can't see why you're zipping.
> MP3s are compressed already, similar to image files like .jpg or .gif.
>
> Cheers,
>
> Chad
> who never takes free help for granted
>
> On 8/30/05, TRACEY, Darren <[EMAIL PROTECTED]> wrote:
> > I'f had the same requirement before and did something like what Chad has
> > suggested. Here's a little more detail:
> >
> > Store your files out of the web root, yet somewhere that CF can get to.
> > This removes the possibility of anyone getting to it without your
> consent.
> > Don't move files around and make copies in temporary directories. Thats
> just
> > way to much work for the server.
> > What I do is make a directory for the "Document Library", then make a
> whole
> > bunch of 2 charachter directories under that, eg 00, 01, 02, 03...
> > This makes sure you don't end up having too many files in any one
> directory.
> > Windows used to have a problem with that a while ago. I'm not sure if it
> > still does or not, but I figure it can't hurt.
> > You'll have to decide how many of these directories you'll have, whether
> its
> > a dozen, a hundred or more.
> > When the file comes into the system (either manually via a web page, or
> when
> > you apply a process to dump the contents of some other directory into
> this
> > system), you'll take its filename and extension and any other info you
> want
> > to keep about it, and put it in a db table, as well as making a uuid
> that
> > will become its file name, and a random number that corresponds to one
> of
> > the numbered directory names we talked about earlier. You can get more
> > technical and do fancy things to determine which directory has the fewer
> > files in it, or base it of stored file size, but a simple random number
> will
> > do just fine and end up distributing them fairly evenly anyway.
> > Of course, there will also be some kind of id field. I like uuids for
> this
> > as well, but I would recommend not using the same uuid as the file's new
> > stored file name.
> > I also think its important to keep the original file extension intact.
> That
> > way you have the option of still being able to let something like verity
> > catalog the files. You'll just have to intervene in the results to make
> the
> > original file info appear.
> >
> > Now when you come to getting the file out, you will hand it over with a
> > cfcontent.
> > The user will be given something like
> getfile.cfm?id=8234847648723642189746
> > as the URL.
> > Getfile.cfm will firstly check the users security, make them login or
> > authenticate in whatever way makes you happy (if they haven't already).
> and
> > do any other checks you may dream up, eg checking ip addresses, number
> of
> > downloads, time since they were given the link, etc.
> >
> > Here's some sample code for a getfile.cfm:
> >
> > ------------------------------------------------------------------------
> > Loading file...
> >
> > <cfparam name="url.ItemID" default="">
> > <cfparam name="url.MIMEType" default="application/octet-stream">
> > <cfparam name="url.openDialog" default="true">
> >
> > <cfquery name="qryGetItem" datasource="#application.dsn#">
> > SELECT LinkOriginalFileName,
> > LinkStoredFilename,
> > LinkOriginalFilenameExt,
> > LinkStoredDirectory
> > FROM LinkTableNameHere
> > WHERE LinkKeyNo = #ItemID#
> > </cfquery>
> >
> > <cfset StoredFile =
> > "#qryGetItem.LinkStoredFilename#.#qryGetItem.LinkOriginalFilenameExt#">
> >
> > <cfif Len(qryGetItem.LinkStoredFilename) GTE 4>
> >
> > <cfif
> >
> fileexists("#application.docLibPath#/#qryGetItem.LinkStoredDirectory#/#Sto
> re
> > dFile#")>
> > <cfheader name="Content-Type" value="#url.MIMEType#">
> > <!--- if url.openDialog is true, show a dialogue box
> > proimpting the user to open or save --->
> > <cfif url.openDialog>
> > <cfheader name="Content-Disposition"
> > value="attachment; filename=#qryGetItem.LinkOriginalFileName#">
> > <cfelse> <!--- if false, just open the document
> --->
> > <cfheader name="Content-Disposition"
> value="inline;
> > filename=#qryGetItem.LinkOriginalFileName#">
> > </cfif>
> > <cfcontent type="#url.MIMEType#"
> >
> file="#application.docLibPath#/#qryGetItem.LinkStoredDirectory#/#StoredFil
> e#
> > " deletefile="No">
> > <cfelse>
> > <script>
> > alert("File does not exist");
> > top.close();
> > </script>
> > </cfif>
> > <cfelse>
> > <script>
> > alert("File does not exist");
> > top.close();
> > </script>
> > </cfif>
> > ------------------------------------------------------------------------
> >
> > I'd recommend using <cfqueryparam> to pass in ItemId to the query too.
> > The different cfheader options will determine whether the user is
> prompted
> > to save/open the file, or whether its just opened in the browser.
> >
> > Make sure this doc library directory is added to your backup process now
> as
> > well.
> >
> > You will also want to write a few admin functions that go through your
> file
> > table and look for entries that don't have a corresponding file in the
> doc
> > lib directories, and also a process to identify files that exist in the
> doc
> > lib directories that don't have entries in the file table.
> >
> > Since your files have uuid file names, you won't have any problems with
> > files being stored that have a file name that clashes with another
> stored
> > file name. It also means that if you have a dev, test and production
> file
> > area, that you can just copy one environment into another and any files
> > unique to one will just slot in to the other without overwriting
> anything it
> > shouldn't.
> >
> > Hope this helps.
> >
> > Regards
> >
> > Darren Tracey
> > (who's not as tired as Chad was)
> > Systems Analyst
> > HR Systems and FastTrack
> > Wealth and Corporate Systems
> > Suncorp
> > p: + 61 7 3232 4091 (x64091)
> > f: + 61 7 3232 4744
> > e: [EMAIL PROTECTED]
> > l: Lvl 3, 388 Queen St Brisbane QLD 4000
> > m: Suncorp IPC IT048, GPO Box 1453, Brisbane QLD 4000
> >
> >
> > > -----Original Message-----
> > > From: M@ Bourke
> > > Sent: Monday, 29 August 2005 11:47 PM
> > > To: CFAussie Mailing List
> > > Subject: [cfaussie] Re: download site
> > >
> > > Hi Jamie,
> > >
> > > Use cfcontent with some kind of conditional statement that is required
> > > for it to fire, like a user must be logged in or something like that.
> > > that should solve all your worries
> > >
> > > M@
> > > who should really be in bed.
> > >
> > > ---
> > > You are currently subscribed to cfaussie as:
> [EMAIL PROTECTED]
> > > To unsubscribe send a blank email to
> > > [EMAIL PROTECTED]
> > > Aussie Macromedia Developers: http://lists.daemon.com.au/
> >
> >
> --------------------------------------------------------------------------
> ---------
> > This e-mail is sent by Suncorp-Metway Limited ABN 66 010 831 722 or one
> of its related entities "Suncorp".
> >
> > Suncorp may be contacted at Level 18, 36 Wickham Terrace, Brisbane or on
> 13 11 55 or at suncorp.com.au.
> >
> > The content of this e-mail is the view of the sender or stated author
> and does not necessarily reflect the view of Suncorp. The content,
> including attachments, is a confidential communication between Suncorp and
> the intended recipient. If you are not the intended recipient, any use,
> interference with, disclosure or copying of this e-mail, including
> attachments, is unauthorised and expressly prohibited. If you have
> received this e-mail in error please contact the sender immediately and
> delete the e-mail and any attachments from your system.
> >
> > If this e-mail constitutes a commercial message of a type that you no
> longer wish to receive please reply to this e-mail by typing Unsubscribe
> in the subject line.
> >
> >
> >
> > ---
> > You are currently subscribed to cfaussie as: [EMAIL PROTECTED]
> > To unsubscribe send a blank email to
> [EMAIL PROTECTED]
> > Aussie Macromedia Developers: http://lists.daemon.com.au/
> >
>
> ---
> You are currently subscribed to cfaussie as: [EMAIL PROTECTED]
> To unsubscribe send a blank email to
> [EMAIL PROTECTED]
> Aussie Macromedia Developers: http://lists.daemon.com.au/
---
You are currently subscribed to cfaussie as: [email protected]
To unsubscribe send a blank email to [EMAIL PROTECTED]
Aussie Macromedia Developers: http://lists.daemon.com.au/