Yes:

    att_id = db2.attachments.insert(
                    attachment = db2.attachments.attachment.store(...),
                    filename = fname,
                    Description = 
r.attachments.attachment_brief_description,
                    )
needs

    att_id = db2.attachments.insert(
                    attachment = db2.attachments.attachment.store(...),
                    payload = stream.read(),
                    filename = fname,
                    Description = 
r.attachments.attachment_brief_description,
                    )

On Friday, 16 November 2012 09:18:47 UTC-6, Cliff Kachinske wrote:
>
> The title describes the problem.
>
> Any suggestions as to what I might do?  Would it be simpler if I just 
> uploaded to a directory?  I'm archiving for auditability, so I suppose 
> there would still be a way to get at earlier versions of uploaded files.
>
> Here is the model:
>
> db.define_table('attachments',
>         Field('attachment', 'upload', uploadfield='payload'),
>         Field('filename', length=512),
>         Field('Description', 'text'),
>         Field('payload', 'blob'),
>         migrate=init_migrate,
>         )
> Common fields are auth.signature and a field called "tenant_link", which 
> is how I implemented the request_tenant functionality before Massimo 
> announced it.
>
> Here is the controller code:
>    for r in rows:
>         ...
>         myfile = mypath + r.attachments.file_name + '.' + 
> r.attachments.file_ext
>         try:
>             stream = open(myfile, 'rb')
>         except IOError:
>             no_finds.append(DIV('unable to find {}'.format(myfile)))
>             continue
>         else:
>             ok.append(DIV('found {}.{}, aka {}'.format(
>                 r.attachments.file_name, r.attachments.file_ext, fname
>                 )))
>             att_id = db2.attachments.insert(
>                     attachment = db2.attachments.attachment.store(
>                         stream, '{}.{}'.format(
>                             r.attachments.file_name, r.attachments.file_ext
>                             )
>                         ),
>                     filename = fname,
>                     Description = 
> r.attachments.attachment_brief_description,
>                     )
>
> The insert is successful except the payload field is never populated. 
>  Here is a snippet  of the results from this postgres query, "SELECT id, 
> filename, octet_length(payload) from attachments;"
>
>   9 | apt-get-output.txt                                                   
>                |        10772
>   10 | a_h_hits.txt                                                       
>                  |        24164
>   11 | a_h_hits.txt                                                       
>                  |        24164
>   12 | greg-free-bizcard                                                   
>                 |       215288
>   27 | Tank Thickness ML.doc                                               
>                 |             
>   28 | Tank Thickness ML.doc(1)                                           
>                  |             
>   29 | A short short file                                                 
>                  |             
>   30 | hello.txt                                                           
>                 |        
>
> Records 9, 10 and 11 were uploaded while testing the interface. Records 12 
> and up were created using the above script.     
>
>

-- 



Reply via email to