comments below...

At 01:56  9/09/02, you wrote:
>In the past, I used <@cgiparam> to determine the platform, then parsed
>the filename from the javascript method below. The only problem, is
>that there would be some WEBtv browser or something that would blow it
>up. I do several sites that are used by consumers, and it is very
>difficult to play with all the possible browsers. I try real hard to
>use code that will work on anything. So about a year ago I stopped
>using this method altogether.


yes that is my point - too complex.

>  I do one of two things:

>1. I create my own file name. Since I am accepting the binary data and
>have to write to a file and store the file name in a DBMS to reference,
>why use the uploaded file name? I create a file name based on a time
>stamp and/or random generated uid, and store the name in a database and
>write the file.

if the client has required a specific name I've simply had them type it in 
to a separate field. A little extra work for them but if they want a 
guaranteed service AND the name that they specify then this is about it for 
options.

>2. More often, unless these are very large files, I actually store the
>binary data as a blob in a table, give it a key of a generated uid (see
>my previous thread about creating uids).

The example below does have some interesting benefits mainly in the ease of 
file management - being able to cull pictures by date without writing some 
external operation to clean up directories. I like the one to many 
relationship concept as well.

Problem is that it turns the database server into an image server, and in 
the most recent example of a file upload solution I used a separate image 
server from the database server due to high volume of accesses (they were 
supermarket specials in a major international chain) and the high bandwidth 
charges in Australia. Otherwise I'd rather use the approach you have shown 
here.

>Here is an example of what I mean. Lets assume we have a contact
>database, where you want to store the picture of someone in the db. In
>my experience, you want to use two tables so that you only call the
>image table when you need the image. You can use a one to one
>relationship:
>
>Table One Schema: Contact Table
>
>uid - integer - counter (primary key)
>lastName - char50
>firstName - char50
>address - char 50
>otherVariousContactFields
>imageUID - char32
>
>Table Two Schema: Contact Image Table
>rowid - integer - counter (primary key)
>uid - char32 - (candidate key)
>image - blob
>mime - char32 - stores the mime type of the image like "image/jpeg"
>
>Now you have the image linked to the contact table. You must have a
>good dbms if you do this alot. It has a lot of benefits. Especially if
>you have multiple servers serving the content. They all hit the same
>dbms, no sync necessary. You can also do this creating a one to many
>relationship where the contactUID is referenced in the image table,
>allowing you to link an unlimited number of images to a single record
>in the contact table.
>
>I have created several photography sites, image libraries, photo
>galleries, and real estate listing sites using these techniques
>allowing for the client or users to safely manage images, pdfs, and
>other binary assets.
>
>One more note, the reason you store the mime type is for flexibility
>when serving the data. You can reference this column in the http header
>so that you can properly serve any binary type, either inline, or as an
>attachment. You may also add a field for content-disposition, or
>whatever variable needs to be set in the header.
>
>Robert Garcia
>
>On Sunday, September 8, 2002, at 12:21  PM, Garth Penglase wrote:
>
>>I believe you are correct Robert, that you cannot get the filename
>>reliably with NAME="whateverfilename" since depending on the browser
>>and platform it could be the full path or not, and with either \ or /
>>used for the path. That is indeed why it is necessary to grab the
>>string in all cases and tokenise it to get the appropriate filename.
>>
>>I, for one, would love to get my hands on a complete solution for
>>this. How do you do it Robert? Do you do it entirely in javascript
>>(which seems to be the most efficient for detection of this sort of
>>thing, though probably beyond me as I am not an expert at writing
>>javascript) or do you use <@CGIPARAM> and create a separate action for
>>each platform/browser?
>>
>>Garth
>>
>>
>>At 07:54  8/09/02, you wrote:
>>>Yes, it is true that the browser will show in the text field just the
>>>file name without the path. But that text field is not passed in the
>>>form if the input type is file. What is passed is the binary info. The
>>>filename can be retrieved with a hidden field and javascript like so:
>>>
>>><FORM NAME="fileUpload" ACTION="<@CGI><@APPFILE>" METHOD="POST"
>>>ENCTYPE="multipart/form-data">
>>>File to upload: <INPUT TYPE="FILE" NAME="file">
>>><INPUT TYPE="HIDDEN" NAME="fileName">
>>><INPUT TYPE="BUTTON" VALUE="Upload"
>>>onClick="document.fileUpload.fileName.value=document.fileUpload.file.v 
>>>al ue;document.TheForm.submit();">
>>></FORM>
>>>
>>>The argument "fileName" will be the file name will be the filename
>>>with
>>>the full path like so:
>>>
>>>win: c:\path_to_file\thefile.ext
>>>mac os 9 and x: /path_to_file/thefile.ext
>>>
>>>The argument "file" will contain the binary data of the file.
>>>
>>>As far as I know the text that you see in the "file" field is not
>>>passed at all.
>>>
>>>Robert.
>>>
>>>On Sunday, September 8, 2002, at 05:54  PM, JJ Smith wrote:
>>>
>>>>Thanks Robert,
>>>>
>>>>With ie 5.1.4 and OS 10.2 the value in the text box is
>>>>just the filename and the extension.
>>>>
>>>>If the full path is being returned on Mac (whatever
>>>>version) as described below then the tokenizing will
>>>>be affected and the logic will have to be based on "/"
>>>>rather than "\" as pointed out by by Robert
>>>>previously.
>>>>
>>>>I thought I had got away with this but now I need to
>>>>go back and put the "/" logic in to allow for Mac.
>>>>
>>>>Thanks again for pointing this out,
>>>>JJ
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>--- Robert Garcia <[EMAIL PROTECTED]> wrote:
>>>>>I have, on OS 9 and OS X with IE 5+ the full path is
>>>>>returned with the
>>>>>"/" as the delimiter.
>>>>>
>>>>>Robert Garcia
>>>>>
>>>>>On Sunday, September 8, 2002, at 04:15  PM, JJ Smith
>>>>>wrote:
>>>>>
>>>>>>Does it matter in this situation anyway as I
>>>>>thought
>>>>>>in IE on a Mac when you hit browse the full path
>>>>>is
>>>>>>not returned - just the filename and extension.
>>>>>Thus
>>>>>>in this case the tokenizing would still give the
>>>>>>desired result.
>>>>>>
>>>>>>Can some mac people check when you hit browse and
>>>>>>browse to the file whether or not the path is
>>>>>>returned.
>>>>>>
>>>>>>Thanks in advance,
>>>>>>JJ
>>>>>>
>>>>>>--- Robert Garcia <[EMAIL PROTECTED]> wrote:
>>>>>>>No, even on OS 9, the file name from the browser
>>>>>>>uses "/".
>>>>>>>
>>>>>>>Robert.
>>>>>>>
>>>>>>>On Saturday, September 7, 2002, at 09:37  AM,
>>>>>Ford
>>>>>>>Pedersen wrote:
>>>>>>>
>>>>>>>>>If you have any mac clients, you must determine
>>>>>>>the platform first.
>>>>>>>>>Mac uses "/", where windows uses "\".
>>>>>>>>
>>>>>>>>Slight correction. Mac OS 9 and below use ":".
>>>>>>>Unix/Linux family & Mac
>>>>>>>>OS X use "/". And Windows of course uses "\".
>>>>>>>>
>>>>>>>>HTH,
>>>>>>>>Ford
>>>>_____________________________________________________________________ __
>>>>>>>
>>>>>>>>_
>>>>>>>>TO UNSUBSCRIBE: send a plain text/US ASCII email
>>>>>>>to
>>>>>>>>[EMAIL PROTECTED]
>>>>>>>>                with unsubscribe witango-talk in
>>>>>>>the message body
>>>>>>>
>>>>>>>--
>>>>>>>
>>>>>>>Robert Garcia
>>>>>>>BigHead Technology
>>>>>>>2781 N Carlmont Pl
>>>>>>>Simi Valley, CA 93065
>>>>>>>Phone 805.522.8577
>>>>>>>http://www.bighead.net/
>>>>>>>http://www.theradmac.com/
>>>>>>>[EMAIL PROTECTED]
>>>>_____________________________________________________________________ __
>>>>>
>>>>>>_
>>>>>>>TO UNSUBSCRIBE: send a plain text/US ASCII email
>>>>>to
>>>>>>>[EMAIL PROTECTED]
>>>>>>>                 with unsubscribe witango-talk in
>>>>>the
>>>>>>>message body
>>>>>>
>>>>>>
>>>>>>__________________________________________________
>>>>>>Do You Yahoo!?
>>>>>>Yahoo! Finance - Get real-time stock quotes
>>>>>>http://finance.yahoo.com
>>>>_____________________________________________________________________ __
>>>>>
>>>>>>_
>>>>>>TO UNSUBSCRIBE: send a plain text/US ASCII email
>>>>>to
>>>>>>[EMAIL PROTECTED]
>>>>>>                 with unsubscribe witango-talk in
>>>>>the message body
>>>>>
>>>>>--
>>>>>
>>>>>Robert Garcia
>>>>>BigHead Technology
>>>>>2781 N Carlmont Pl
>>>>>Simi Valley, CA 93065
>>>>>Phone 805.522.8577
>>>>>http://www.bighead.net/
>>>>>http://www.theradmac.com/
>>>>>[EMAIL PROTECTED]
>>>>_____________________________________________________________________ __ _
>>>>>TO UNSUBSCRIBE: send a plain text/US ASCII email to
>>>>>[EMAIL PROTECTED]
>>>>>                 with unsubscribe witango-talk in the
>>>>>message body
>>>>
>>>>
>>>>__________________________________________________
>>>>Do You Yahoo!?
>>>>Yahoo! Finance - Get real-time stock quotes
>>>>http://finance.yahoo.com
>>>>_____________________________________________________________________ __ _
>>>>TO UNSUBSCRIBE: send a plain text/US ASCII email to
>>>>[EMAIL PROTECTED]
>>>>                 with unsubscribe witango-talk in the message body
>>>
>>>--
>>>
>>>Robert Garcia
>>>BigHead Technology
>>>2781 N Carlmont Pl
>>>Simi Valley, CA 93065
>>>Phone 805.522.8577
>>>http://www.bighead.net/
>>>http://www.theradmac.com/
>>>[EMAIL PROTECTED]
>>>
>>>______________________________________________________________________ __
>>>TO UNSUBSCRIBE: send a plain text/US ASCII email to
>>>[EMAIL PROTECTED]
>>>                with unsubscribe witango-talk in the message body
>>
>>_______________________________________________________________________ _
>>TO UNSUBSCRIBE: send a plain text/US ASCII email to
>>[EMAIL PROTECTED]
>>                with unsubscribe witango-talk in the message body
>
>--
>
>Robert Garcia
>BigHead Technology
>2781 N Carlmont Pl
>Simi Valley, CA 93065
>Phone 805.522.8577
>http://www.bighead.net/
>http://www.theradmac.com/
>[EMAIL PROTECTED]
>
>________________________________________________________________________
>TO UNSUBSCRIBE: send a plain text/US ASCII email to [EMAIL PROTECTED]
>                with unsubscribe witango-talk in the message body

________________________________________________________________________
TO UNSUBSCRIBE: send a plain text/US ASCII email to [EMAIL PROTECTED]
                with unsubscribe witango-talk in the message body

Reply via email to