That's much better. Thanks!
On Apr 16, 2:04 pm, mdipierro <mdipie...@cs.depaul.edu> wrote: > never hardcode a path: > > import os > > return > response.stream(os.path.join(request.application,'uploads',rows[0].filedata > ),'rb')) > > response stream makes sure that RANGE request are also supported. > > On Apr 16, 12:57 pm, Dragonfyre13 <dragonfyr...@gmail.com> wrote: > > > > > updated that one line to this, but it's not any better, just slightly > > more portable. Any insights? > > > return open("./applications/" + request.application + "/uploads/" + > > rows[0].filedata).read() > > > On Apr 16, 12:49 pm, Dragonfyre13 <dragonfyr...@gmail.com> wrote: > > > > I want to be able to stream a file that's uploaded via an upload > > > field. So far, I haven't really found a way to do this, beyond > > > grabbing the file name out of filedata, and then sticking static > > > directory path on the front, which is both kludgy, and I have to think > > > the wrong way of going about it. Here's what I've got: > > > > def play(): > > > response.headers["Content-Type"] = "audio/x-vox" > > > response.headers["Content-Disposition"] = "attachment; filename=" > > > + request.args[0] + '.vox' > > > rows = db(db.audio_files.playname == > > > request.args[0]).select(db.audio_files.ALL) > > > if len(rows): > > > return open("/opt/web2py/applications/myapp/uploads/" + > > > rows[0].filedata).read() > > > else: > > > raise ValueError, "Passed incorrect playname: " + > > > str(request.args[0]) > > > > Essentially, I have another controller uploading to the DB under > > > audio_files, and sticking a "playname" in the database as a reference > > > to that file. I can then pass the "playfile" name into this function > > > in order to get it to return the data out of that file handed back. > > > > Here's the problem. Right now, I've got the directory path prepended > > > statically. That's bad in a big way. Second, there's no sanitation, > > > and minimal error handling. That will be cleaned up once I get it > > > working with an actual solution, rather than this hackish thing. > > > > Basically, I expect that there's something other than > > > response.download that will give me the actual data for a file. I > > > tried response.download, but it doesn't let me set the content-type, > > > or content-disposition (that's all set by it, overriding my header > > > info). There has to be something that says "take the data from this > > > database entry, as a file object", I'm just looking for what that is. > > > > I then want to be able to store back into it, but that's another point > > > not covered above, and I would assume I can just overwrite the old > > > file data, or just update the field in the DB. Perhaps if someone is > > > tackling the previous question, they can give this one a go too? > > > > -- > > > Subscription > > > settings:http://groups.google.com/group/web2py/subscribe?hl=en