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.
--