Thanks for the information Andy.

The documentation states that you can retrieve renamed file from the
'attachment' field, but I'm not sure exactly how.  I can get the pointer
(<open file '<fdopen>', mode 'w+b' at 0x02549440>) by using
request.args.attachment.file and also the temp filename by adding
.name--but that shows a local temp destination as opposed to the renamed
file in the 'uploads' folder.  How can I get the new name?

Any help is appreciated.

On Mon, Nov 7, 2011 at 6:51 PM, Anthony <[email protected]> wrote:

> When you upload a file via an upload field, by default it goes into the
> /web2py/applications/yourapp/uploads folder, though you can specify a
> different folder via the 'uploadfolder' argument to Field(). The file
> itself is renamed (for security reasons) to
> [tablename].[fieldname].[16-char-uuid].[b16encoded-original-filename].[original-extension].
> This new name is what gets stored in the upload field (the 'attachment'
> field in your case). If you want to access the file, you can retrieve the
> name from the 'attachment' field, and use that along with the path to the
> 'uploads' folder (or whatever folder you set for uploads).
>
> Note, if you do any processing of the file, there's no need to "re-insert"
> anything in the database, as the database merely stores the filename.
>
> Anthony
>
>
> On Monday, November 7, 2011 6:07:10 PM UTC-5, D.P. wrote:
>>
>> Anyone know how to pull an uploaded file from the database locally on the
>> server?  I want to do some server-side processing on the file and then
>> re-insert it to the database.  I'm not sure I understand how to get the
>> local path on the server of the uploaded file.  The static/upload directory
>> appends an random ID to the files.  How can I get the path to an uploaded
>> file so that I can manipulate it?
>>
>>
>> I'm using a standard model form like the following:
>>
>> db=DAL('sqlite://storage.db')
>> db.define_table('test',
>>         Field('package_name'),
>>         Field('attachment','upload',**default=''))
>>
>> My controller:
>>
>> form=SQLFORM(db.testplug)
>>     if form.accepts(request.vars):
>>         response.flash='Files uploaded'
>>         filename = request.vars.attachment.**filename
>>         filereference = request.vars.attachment.file
>>         print filename
>>         print filereference
>>     records=SQLTABLE(db().select(**db.test.ALL),upload=download)
>>     return dict(form=form,records=**records)
>>
>>
>>
>>
>>
>> My view:
>>
>> {{=records}}
>>
>> [{{=A('delete all',_href=URL('delete_**storage'))}}]
>>
>>
>>
>>


-- 
D.P.

Reply via email to