from the form2 in the upload method above is how the link is made and the 
custom store retrieve was from an example on the web there isnt many.
But its like its not even using the custom retrieve cause why is looking 
there for the file. Is there and example of using the built in way?

On Thursday, January 16, 2014 10:25:21 AM UTC-6, LaDarrius Stewart wrote:
>
> I thought I was on the correct path with this can soemone tell me where 
> this is going wrong?
>
> db.define_table('consumer',
>                 Field 
> <http://127.0.0.1:8000/examples/global/vars/Field>('lname','string', 
> requires=IS_NOT_EMPTY 
> <http://127.0.0.1:8000/examples/global/vars/IS_NOT_EMPTY>()),
>                 Field 
> <http://127.0.0.1:8000/examples/global/vars/Field>('fname','string', 
> requires=IS_NOT_EMPTY 
> <http://127.0.0.1:8000/examples/global/vars/IS_NOT_EMPTY>()),
>                 Field 
> <http://127.0.0.1:8000/examples/global/vars/Field>('address','string'),
>                 Field 
> <http://127.0.0.1:8000/examples/global/vars/Field>('city','string'),
>                 Field 
> <http://127.0.0.1:8000/examples/global/vars/Field>('stayte','string'),
>                 Field 
> <http://127.0.0.1:8000/examples/global/vars/Field>('zip','string'),
>                 Field 
> <http://127.0.0.1:8000/examples/global/vars/Field>('h_phone','string'),
>                 Field 
> <http://127.0.0.1:8000/examples/global/vars/Field>('c_phone','string'),
>                 Field 
> <http://127.0.0.1:8000/examples/global/vars/Field>('adm_date','date'),
>                 Field 
> <http://127.0.0.1:8000/examples/global/vars/Field>('dob','date'),
>                 Field 
> <http://127.0.0.1:8000/examples/global/vars/Field>('pod','string'),
>                 auth.signature, #creates fields: created_on, created_by, 
> modified_on, modified by, is_active
>                 format= lambda r: r.fname + ' ' + r.lname  #substitutes 
> consumer.id for consumer name
>                 )
> db.define_table('files',
>                 Field 
> <http://127.0.0.1:8000/examples/global/vars/Field>('name', unique=True, 
> length=255),
>                 Field 
> <http://127.0.0.1:8000/examples/global/vars/Field>('phile', 'upload', 
> custom_store=lambda file, filename, path: store_file(file, filename, path), 
> custom_retrieve=lambda filename, path: retrieve_file(filename, path) ),
>                 Field 
> <http://127.0.0.1:8000/examples/global/vars/Field>('consumerid', 'reference 
> consumer'),
>                 auth.signature)
>
> def store_file(file, filename=None, path=None):
>     path = "applications/facesheet/uploads"
>     if not os.path.exists(path):
>          os.makedirs(path)
>     pathfilename = os.path.join(path, filename)
>     dest_file = open(pathfilename, 'wb')
>     try:
>             shutil.copyfileobj(file, dest_file)
>     finally:
>             dest_file.close()
>     return filename
> def retrieve_file(filename, path=None):
>     path = "applications/facesheet/uploads"
>     return (filename, open(os.path.join(path, filename), 'rb'))
>
> def upload():
>     var = request <http://127.0.0.1:8000/examples/global/vars/request>.args(0)
>     var1 = request 
> <http://127.0.0.1:8000/examples/global/vars/request>.args(1)
>     var2 = request 
> <http://127.0.0.1:8000/examples/global/vars/request>.args(2)
>     form=SQLFORM 
> <http://127.0.0.1:8000/examples/global/vars/SQLFORM>(db.files, upload=URL 
> <http://127.0.0.1:8000/examples/global/vars/URL>("download"))
>     form.vars.consumerid = var
>     if form.process().accepted:
>         response <http://127.0.0.1:8000/examples/global/vars/response>.flash 
> = "files updated"
>     query=(db.files.consumerid==var)
>     form2=SQLFORM 
> <http://127.0.0.1:8000/examples/global/vars/SQLFORM>.grid(query, args=[var, 
> var1, var2], paginate=1, details=False, searchable=False, editable=False, 
> csv=False, create=False, deletable=False, user_signature=False)
>     return locals()
>
> def download():
>     if not request <http://127.0.0.1:8000/examples/global/vars/request>.args:
>         raise HTTP <http://127.0.0.1:8000/examples/global/vars/HTTP>(404)
>     name = request 
> <http://127.0.0.1:8000/examples/global/vars/request>.args[-1]
>     field = db["files"]["phile"]
>     try:
>         (filename, file) = field.retrieve(name)
>     except IOError:
>         raise HTTP <http://127.0.0.1:8000/examples/global/vars/HTTP>(404)
>     #response.headers["Content-Type"] = c.contenttype(name)
>     response 
> <http://127.0.0.1:8000/examples/global/vars/response>.headers["Content-Disposition"]
>  = "attachment; filename=%s" % name
>     stream = response 
> <http://127.0.0.1:8000/examples/global/vars/response>.stream(file, 
> chunk_size=64*1024, request 
> <http://127.0.0.1:8000/examples/global/vars/request>=request 
> <http://127.0.0.1:8000/examples/global/vars/request>)
>     raise HTTP <http://127.0.0.1:8000/examples/global/vars/HTTP>(200, stream, 
> **response <http://127.0.0.1:8000/examples/global/vars/response>.headers)
>
> *The upload functionality is working fine stores the relative information in 
> the database*
>
> *and saves the file on the server which i wanted the problem is when someone 
> clicks on the file *
>
> *from the form2 within the upload method. The link is 
> **http://127.0.0.1:8000/facesheet/default/upload/1/John/Smith/download/test3.docx
>  
> <http://127.0.0.1:8000/facesheet/default/upload/1/John/Smith/download/test3.docx>.*
>
> *This brings back a 404 tried so many different examples on the web the few 
> that are out there atleast*
>
> *but I keep running into a brick wall. Thank You in advance.*
>
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to