No.

On Thursday, March 29, 2012 5:54:59 PM UTC-7, Francisco Gama wrote:
>
> Let me put it this way:
> Can I determine the hash of an uploaded file during the upload process 
> (when the form is submitted) and before it is actually stored on the 
> filesystem?
>
> I believe that all my questions collapse to that.
>
> Thank you.
>
> On Mar 30, 2012, at 1:43 AM, Derek wrote:
>
> From the documentation:  http://web2py.com/books/default/chapter/29/7
> A SQLFORM object also deals automatically with "upload" fields by saving 
> uploaded files in the "uploads" folder (after having them renamed safely to 
> avoid conflicts and prevent directory traversal attacks) and stores their 
> names (their new names) into the appropriate field in the database. After 
> the form has been processed, the new filename is available in 
> form.vars.fieldname (i.e., it replaces the cgi.FieldStorage object in
> request.vars.fieldname), so you can easily reference the new name right 
> after upload. 
>
> On Thursday, March 29, 2012 5:20:52 PM UTC-7, Francisco Gama wrote:
>>
>> I need to create a form that submits files and at the same time, stores 
>> the user who did it, the name of the file, its hash, the time. Other things 
>> like his IP address, his web client would be interesting as well.
>>
>> I see two ways:
>> 1) some sort of method tracing (a decorator maybe) that informs me what 
>> calls have been done to some controller
>> 2) include in the uploading form, insertions to the database that also 
>> keep track of what has been done (the solution I'm trying)
>>
>>
>> While I want to keep files metadata stored on the database, I want them 
>> to be stored on the file system. So how can I create a form that uploads 
>> the file and stores all this metadata on the database (including getting 
>> the filename, its hash,...)?
>>
>>
>>
>>
>> On Mar 30, 2012, at 12:11 AM, Derek wrote:
>>
>> Are you getting any error messages? What do you mean by "this is not yet 
>> working".
>>
>> On Thursday, March 29, 2012 8:10:38 AM UTC-7, blackthorne wrote:
>>>
>>> Hello,
>>>
>>> I am working on a "secure" documentation system that should support file 
>>> uploads but also to give the ability to trace user actions like 
>>> download/upload of files. This should be integrated in the portal itself so 
>>> that the administrator doesn't need to parse web log files and trace users 
>>> and IP's. Example:
>>>
>>> user Malkovich submitted a file: report.docx with hash: 102310239123123 
>>> at 2012.03.27 10:12:45 (GMT)
>>> user BigFatCat downloaded the file: report.docx (id: 1201010121) 
>>> at 2012.03.27 12:11:05 (GMT)
>>> ...
>>>
>>> So, I just said what I have and I want, so now let me tell have I done 
>>> about this:
>>>
>>> in the model:
>>>
>>> ...
>>> db.define_table('attachment',
>>>     Field('name', requires=IS_NOT_EMPTY()),
>>>     Field('filename'),
>>>     Field('description'),
>>>     Field('doc_type', 
>>> requires=IS_IN_SET(['text','report','image','other']), default='other'),
>>>     Field('hash', 'string'),
>>>     Field('file','upload'),
>>>     format='%(name)s')
>>>
>>> db.define_table('logs',
>>>     Field('message','string', requires=IS_NOT_EMPTY()),
>>>     Field('full_description','text'),
>>>     Field('action', 'string', 
>>> requires=IS_IN_SET(['create','remove','download','upload', 
>>> 'edit','other']),default='download'),
>>>     Field('attachments', 'list:reference attachment', notnull=False),
>>>     Field('user', 'list:reference auth_user'),
>>>     Field('happened_on','datetime', default=datetime.datetime.now()))
>>> ...
>>>
>>> in the controller:
>>>
>>> def hash(file):
>>>     return hashlib.md5(open(file).read()).hexdigest()
>>>
>>> @auth.requires_login()
>>> def insert_file():
>>>     form = SQLFORM(db.attachment, upload=URL('download'), 
>>> fields=['name', 'description', 'file'])
>>>     if request.vars.file!=None:
>>>         form.vars.filename = request.vars.file.filename # not sure about 
>>> this one...
>>>         form.vars.hash = hash(file)
>>>     if form.process().accepted:
>>>         db.logs.insert(message='file submitted', 
>>> full_description=forn.vars.hash, action='upload', attachments='', user=
>>> auth.user.id, happened_on=request.now)        
>>>         response.flash = 'form accepted'    
>>>     elif form.errors:
>>>         response.flash = 'something went wrong, try harder'
>>>     record = db.attachment(request.args(0)) or redirect(URL('index'))
>>>     return dict(form=form)
>>> ...
>>>
>>> This is not yet working but don't think I am on the right track? Tips?
>>>
>>> Thank you
>>>
>>
>>
>

Reply via email to