2011-10-05 3 views
1

나는 Corona (Lua 기반) 으로 일하고 있으며 일반 브라우저에서 게시하는 데이터를 저장할 수있는 서버를 만들고 싶습니다.Lua 다운로드 POST 요청

나는 "POST"시퀀스를 얻는 지점에 있으며 이제는 들어오는 데이터를 저장해야합니다.

몇 가지 문제가 있습니다. 게시물을 얻은 후에는 파일을 가져 오지 않고 먼저 여러 개의 헤더와 "---- WebKitFormBoundary1AA ..."와 같이 정보 유형이 "012" 각 단일 선은 경계 시퀀스의 첫 번째 시작과 두 번째 시간 (끝 경계)에 대해 가져옵니다. 내 코드는 조용하게 엉망으로 보이고 더 쉬운 옵션이 있어야합니다. 해결책이 있으면 게시하십시오. 에서 어떤 오류가 발생한 후 루프 유념하라 루프

처리됩니다

감사 크리스

여기

내 코드 : 지방 요청, ERR = 클라이언트 :

if request:sub(1,4) == "POST" then 
    print ("GOT DATA UPLOAD") 

    request,err = client:receive() 
    local state = 0 
    local lastdummy = "" 

    while state ~= 3 and not err do 
      request,err = client:receive() 

     -- data between bounderies 
     if state == 2 then 
      if request == "\r" then print ("----OK"); end 

      print (request) 

     end 

      if state == 0 and request:sub(1,13) == "Content-Type:" then 
      a,b = string.find (request, "boundary=") 
      if a > 0 then 
       lastdummy = (string.sub(request,b+1)) 
       state = 1 
      end 
     elseif state == 1 then 
      if request == "--"..lastdummy then 
       print ("startttt") 
       state = 2 
      end 
     elseif state == 2 then 
      if request == "--"..lastdummy then 
       print ("ENNNNND") 
       state = 3 
      end  
     end 

    end 
    state = 0 
    print ("done") 
end 

답변

0

귀하의 데이터가) (수신 multipart/form-data 형식입니다. 당신은 그것을 해독해야합니다. 어떤 HTTP 루팅 (Lua) HTTP 서버로부터 어떤 HTTP 파싱 라이브러리/코드를 재사용 할 것을 제안한다. (그들을 인터넷 검색을 많이 가지려고한다.) 예를 들어 : https://github.com/keplerproject/wsapi/blob/master/src/wsapi/request.lua

을 또한,이 스레드 체크 아웃 : http://lua-users.org/lists/lua-l/2007-11/msg00178.html