On Fri, Sep 3, 2010 at 11:46 AM, Fabio Mascarenhas <mascaren...@acm.org>wrote:
> More than a starting point, I think. The parse_message_body function > in this can be reused in an WSAPI program by making an LTN12 source > for wsapi_env.input, which should be easy, plus passing { env = > wsapi_env } as the msg parameter, and your file upload callback. > > The LTN12 module is part of LuaSocket. > I have written something like that. I think it goes along the lines of what you suggested. I think the following example assumes the POST is multipart/form-data function UploadHandler(wsapi_env) local request = wsapi.request_stream.new(wsapi_env) local response = wsapi.response.new(200, { ["Content-Type"]= "text/plain" }) local file_sink, err = ltn12.sink.file( io.open(fullFileName, "wb") ) if not file_sink then response.status = 500 response:write("Unable to save file to disk") return response:finish() end -- o Table containing decoded (name, file) and raw (headers) mime header data -- o String value containing a chunk of the file data -- o Boolean which indicates wheather the current chunk is the last one (eof) local readBytes = 0 local mimeHeaders local callback = function( headers, chunk, last ) if not mimeHeaders then mimeHeaders = headers end readBytes = readBytes + #chunk file_sink(chunk) if last then file_sink(nil) end end request:parse_message_body( callback ) response:write(tostring(readBytes)) return response:finish() end
request_stream.lua
Description: Binary data
_______________________________________________ Kepler-Project mailing list Kepler-Project@lists.luaforge.net http://lists.luaforge.net/cgi-bin/mailman/listinfo/kepler-project http://www.keplerproject.org/