I'm working on a game app that is setup to have users create profiles
using the Auth class.  I want to have users save games specific to
their account, and allow them to have multiple saved games.  I also
want to have the saved games listed so the user can load (and maybe
download) them.  The files would be strings that shouldn't be more
than a couple kb.

I found this awesome example app that I'm looking through, but it
works with uploaded files vs auto-generated files made from strings:
 http://web2py.com/appliances/default/show/70

I'm trying to extract out some of the code from this appliance and
write data, but every file I write is blank.  I put in some debug and
it is going through the try block, also the test.txt, which looks like
it is debug text, is empty.  I feel like there is something small, but
important that I'm missing, any ideas?  Here is the code I have right
now:

output=os.path.join(request.folder,'static','test.txt')

...

@service.jsonrpc
def sendFileJSON(dataFromJSON):
    parentpath='/Documents/' #temporary
    filename='testFile06.dat' #temporary
    file = cgi.FieldStorage('file', 'testFile06.dat', 'abc\n')
#eventually use dataFromJSON instead of abc


    filepath=parentpath+filename
    filetype=os.path.splitext(filename)[1][1:]
 
row=db((db.allfiles.parentpath==parentpath)&(db.allfiles.filepath==filepath)&(db.allfiles.filename==filename)
\
    &(db.allfiles.user==me)).select()

    if not len(row):
        db.allfiles.insert(filename=filename,filepath=filepath, \
 
parentpath=parentpath,filetype=filetype,file=db.allfiles.file.store(file.file,filename),datecreated=now,user=me)
        result = {
                'Path' : parentpath,
                'Name' : filename,
                'Error' :'',
                'Code':0
            }
    else:
        result = {
                'Path' : parentpath,
                'Name' : filename,
                'Error' : 'File already exists',
                'Code':1
            }
        return str(result)
 
row=db((db.allfiles.filename==filename)&(db.allfiles.user==me)).select()
[0]
    insertedfile=row.file
    outfile=open(output,'wb')
    try:
        filepath=os.path.join(request.folder,'uploads',insertedfile)
        filesize=os.path.getsize(filepath)
        if filepath[-3:]=='txt' or filepath[-4:]=='html':
            filepath=os.path.normpath(filepath)
            filein=open(filepath,'r')
            dbcontent=filein.read()
            filein.close()
 
db((db.allfiles.filename==filename)&(db.allfiles.user==me)).update(filesize=filesize,content=dbcontent)
        else:
 
db((db.allfiles.filename==filename)&(db.allfiles.user==me)).update(filesize=filesize)
        outfile.close()
    except:
        outfile.write(str(sys.exc_info()[1]))
        outfile.close()
    return "saved"

Reply via email to