Hi Massimo and Cesar. First of all another one zillion thxz to the
Extremely Amazing  Framework ever created !

I have a sittuation that is not the same as Cesar:
http://groups.google.com/group/web2py/browse_thread/thread/c83cd69dee02c9b1/065c44106598d69b?lnk=gst&q=upload+#065c44106598d69b
but somehow it is related..
and I did spent like 6 days trying many things and I could not make it
right... hope you could help me out..
and maybe this solves many others problems...

*In a nut shell, I'm trying to upload the file, store it on the
database (using the two fields upload and  blob ),
and save all meta-data and common information to different fields on
the same record *

*By meta-data I refer to file Mime types*
 1. MIME-Version
 2. Content-ID
 3. Content-Type
   [ 4.  File header signature, extracted from the file first data
block -- not sure one of the 3 fields above provide this incase not ]

*and common infomation*
I mean all user information that could be associated to the file:

5. Full file name ( 'C:\My Documents\pics\agape.jpg' )
6. File Extension (  '.jpg' )
7. File Size ( ' 230 kb ' )
 n. ...or any other metadata information available for the file

I could make the upload/ and blob/ work but I'm not having success to
gather and extract this information from the file at the same time I'm
uploading and storing it on the DB..

This is for my Computer Science Bachelor Graduation Work at Unip, São
Paulo University, once i get it more mature  I'm going to release it
to the community, as I'm aiming to create an Open Source Project
similar what happened to Instant Press but on a different scope
application some sort of ECM tool.. Even being aware that may not be
wise to store all these and some could be derivative from other
fields, I need to make this work for the proof of concept to develop
other concepts in the project.....



So my model is like this

# Model
db.define_table("image",
    Field('pic','upload',default=''),
    Field('file','upload', default="", autodelete=True,
uploadfield='file_binary_data') ,
    Field('file_binary_data', 'blob'),
    Field('physical_file_name'), # the full file name.. is it possible
grab the folder from where it was uploaded ?
    Field('file_extension'),
    Field('file_size'),
    Field('MIME_Version'),
    Field('Content_ID'),
    Field('Content_Type'),
    Field('file_header'),  #File header footprint extracted from X top
chars from file
    )


#Controller
def Upload():
    form=SQLFORM(db.image)

    if form.accepts(request.vars, session):

        file_name = request.vars.pic

        try: ext = re.compile('\.\w+
$').findall(file_name.filename.strip())[0]
        except IndexError: ext = '.txt'

        #pic_filename = 'image.'+'pic.'+str(random.random())[2:] + ext
        #pic_filename = 'image.'+'pic.' +
str(uuid.uuid4()).replace('-','') + ext

        #pic_filename = pic.filename
        file_path  = os.path.join(request.folder, 'uploads/',
file_name)
        file_handler = open(file_path,'wb')
        file_handler.close()

        raw_file_size = file_handler.?file_size()
        MIME_Version  = ?get_MIME()
        Content_ID    = file_handler.?file_handler()
        Content_Type  = file_handler.?file_type()
        file_header   = ?get_Phys_File_Header(file_handler)

        image_id = db.image.insert(
                pic  = file_name.uuid64 ,
                file_binary_data = file_name ,
                physical_file_name = file_path ,
                file_extension = ext ,
                file_size =  raw_file_size ,
                MIME_Version =  MIME_Version ,
                Content_ID =  Content_ID ,
                Content_Type =  Content_Type ,
                file_header = file_header ,
            )


        response.flash = 'File Uploaded'

    return dict(form=form)



#######

I tried to update the response.post_var trying to avoid the manual
record insert directly but the change didn't went to db


on the manual insert I added fictitious  properties and method trying
to access the properties array directly of
FieldStorage object..  they are marked with  questions marks (?)   to
indicate where I'm looking for help


Is it possible to do store everything on the same moment file is
uploaded ?
Any help on how to store these columns are welcome ! thanks much





_______________________________________________________________
Alexandre A. Almeida
Ax3

"Any intelligent fool can make things bigger and more complex... It
takes a touch of genius - and a lot of courage to move in the opposite
direction." -- Albert Einstein

Reply via email to