Works now. Thanks. I still need to get the knack of this. I hope practice makes perfect.
On Sep 5, 11:39 pm, mdipierro <[email protected]> wrote: > replace > > stream=TAG(stream).flatten() # THIS IS WHERE THE PROBLEM IS > > with > > import cStringIO > stream=cStringIO.StringIO(TAG(stream).flatten()) > > On Sep 5, 10:29 pm, weheh <[email protected]> wrote: > > > I need to upload a file to uploads, process it, and store the > > processed result in a new folder/file. > > > # I've defined the following two models > > db.define_table('infile', > > Field('parent',db.parent), > > Field('name','upload',autodelete=True,uploadseparate=True)) > > db.define_table('outfile', > > Field('parent',db.parent), > > Field('name','upload',autodelete=True,uploadseparate=True)) > > > # Here's the controller for uploading the input file > > def input(): > > ... blah ... > > if form.accepts(request.vars,...): > > id=create_parent(form) > > request.vars.name.infile.seek(0) # rewind uploaded file > > db.infile.insert(parent=id, > > > name=db.infile.name.store(request.vars.name.file,request.vars.name.filename)) > > process(id) > > redirect( ...) > > > # and here's the routine for processing the input file to generate the > > output file > > def process(id): > > """Flattens infile and writes outfile""" > > # I want to read the input file that was uploaded and then write > > # a flattened version of the uploaded file to a path /myapp/static/ > > output/ab/xy/out_abjljsdfljljsdf.xykjsdkjhsf.txt > > # I've start with this: > > infile=db(db.file.parent==id).select(db.file.name).first() > > inpath=get_full_path(infile.name) > > stream=open(inpath,'rb') > > stream=TAG(stream).flatten() # THIS IS WHERE THE PROBLEM IS > > outpath=create_empty_file_under_static_slash_txtfiles(suffix='txt') > > db.outfile.insert(parent=id, > > name=db.outfile.name.store(stream,outpath)) # THIS DOESN'T WORK > > BECAUSE IT'S NOT A STREAM > > return > > > I've embedded comments above showing where I'm running into problems. > > What's the best way for me to be able to flatten the input file and > > write to the output file. NOTE: I am doing things this way because I > > also want the input and output files to be autodeleted in case the > > parent record is deleted. > > > p.s. unless I'm doing things the right way, which I doubt, don't worry > > about syntax too much above since I just typed it into this post and > > didn't copy and paste from a running program.

