GT::SQL::File - adds file upload and download abilities to GT::SQL
GT::SQL::File::Fh - basic file object
GT::SQL::File is not created directly by the user. This module is an internal module for GT::SQL to provide the abilty to upload/download files into a database column (or so it seems).
GT::SQL::File::Fh is often accessed by the user as well as created by the user whenever the user wants to store a file in the database.
When a new table is created or a column is converted into 'FILE' type, two things are created. First a column of type text which will save the name of the file that is being stored. Secondly, a piggy-back table will be greated under the name ``parent_table_name_File''. This new table will store the location of the uploaded/stored file and various associated file attributes.
To create a new file table, include a column something like the following.
File_Col_Name => {
# common parameters pos => 2, type => 'FILE',
# location of the directory where # all the files should be saved file_save_in => '/tmp',
# the method all the files are saved # 'hashed', or 'simple' # # Defaults to hashed, and stores files in: # file_save_in/hashed_letter/ID # Simple stores files in: # file_save_in/ID_OwnName.OwnExt file_save_scheme => 'hashed', } ...
Once you have the table created, to insert:
# Include all the modules use GT::SQL; use GT::SQL::File; # First create a file object pointing to the file $f = GT::SQL::File->open('/path/to/file.txt'); # Then create a table object $DB = GT::SQL->new('path/to/defs'); $tbl = $DB->table(); # Create the record # the file field can also be GT::CGI::Fh type $rec = { File_Column => $f, # ... and all the other columns };
# optionally, if you know the path to the file, you can provide # a scalar ref of the path and the module will autoload # the values # simple scalar values will be dropped $rec = { File_Column => \``/path/to/file.txt'' # ... and all the other columns };
# Then to store the file $id = $tbl->add( $rec );
When a file has been stored. A standard select will only return the name of the file.
To get a filehandle, taking the previous example, if we know the unique id, you can do the following.
$fh = $tbl->file_info( 'File_Column', $id );
You can use this file handle just like any other, however hidden behind are special functions that can be used as follows:
print "Content-type: ", $fh->File_MimeType(), "\n\n"; print <$fh>;
The following is a partial list of special functions you may access.
Method Returns ------ ------- File_Name the basic filename File_Directory path to the file File_MimeType mimetype of the file File_Size site of the file File_RelativePath the permuted file and directory without root File_URL if possible, the URL to the requested file
Copyright (c) 2004 Gossamer Threads Inc. All Rights Reserved. http://www.gossamer-threads.com/
Revision: $Id: File.pm,v 1.60 2004/08/28 03:53:43 jagerman Exp $