[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: need help to handle fail to use lpeg to parse http upload file with multi-part
- From: Sean Conner <sean@...>
- Date: Tue, 22 Sep 2015 04:19:33 -0400
It was thus said that the Great zhiguo zhao once stated:
> Hi all,
> attachment is post data(to upload file), when I use below code to parse
> only success on plain text file, failed with any binary file.
> My quest is lpeg only support plain text? and if support binary even
> partly, how to update my lpeg code to parse attachment if support binary.
> thank you for you option or help.
I use LPeg to parse CGI data and while my code isn't in a form to be
published quite yet , I do know that I can handle binary data just fine.
The main part of the code that will probably help you the most is:
local boundary = lpeg.P("--" .. separator)
local hdrs = core.parse_headers(mime._HEADERS,contentdisp._HEADERS)
local body = lpeg.C((lpeg.P(1) - boundary)^0)
local section = boundary
* lpeg.Ct(lpeg.Cg(hdrs,"headers") * lpeg.Cg(body,"body"))
local sections = lpeg.Ct(section^1) * boundary * lpeg.P"--" * core.CRLF
local tmp = sections:match(data)
hdrs just parses the MIME headers for each section, body is what parses the
actual body of each section and is text/binary agnostic.
 It's 741 lines of Lua/LPeg code just to parse multipart/form-data
and what I have works for my usecase; I can't guarentee it will work
for all websites.