2012-10-07 80 views
2

我有一個小小的問題,涉及將圖像上傳到使用相機或相冊拍攝的服務器。我正在使用以下代碼將圖像上傳到我的服務器:但是通過此代碼,我的服務器僅調用圖像的表值,如下所示:table:0x11791daf0,如何獲取圖像而不是值?並且還可以使用此代碼上傳文本?從相機/相冊將圖像上傳到服務器 - Corona sdk

和我的服務器上的PHP腳本到底。

預先感謝您:)

 


    local function monitorMem(event) 
     collectgarbage("collect") 

     print("\nMemUsage: " .. (collectgarbage("count")/1000) .. " MB") 
     print("Texture Usage " .. system.getInfo("textureMemoryUsed")/1000000) 

     return true 
    end 

    Runtime:addEventListener("enterFrame", monitorMem) 




    local image 


    local mime = require "mime" 

    local bkgd = display.newRect(0, 0, display.contentWidth, display.contentHeight) 
    bkgd:setFillColor(0, 0, 0) 

    local myRoundedRect = display.newRoundedRect(10, 50, 80, 50, 12) 
    myRoundedRect.strokeWidth = 3 
    myRoundedRect:setFillColor(140, 140, 140) 
    myRoundedRect:setStrokeColor(180, 180, 180) 

    local sessionComplete = function(event) 
      image = event.target 

      print("Camera ", (image and "returned an image") or "session was cancelled") 
      print("event name: " .. event.name) 
      print("target: " .. tostring(image)) 

      if image then 
        -- center image on screen 

        image.x = display.contentWidth/2 
        image.y = 59 
        local w = image.width 
        local h = image.height 
        image.xScale = 0.3 
        image.yScale = 0.3 
        print("w,h = ".. w .."," .. h) 
      end 
    end 

    local listener = function(event) 
      if media.hasSource(media.Camera) then 
        media.show(media.Camera, sessionComplete) 
      else 
        native.showAlert("Corona", "Camera not found.") 
      end 
      return true 
    end 
    myRoundedRect:addEventListener("tap", listener) 


    local myRoundedRect1 = display.newRoundedRect(10, 400, 150, 50, 12) 
    myRoundedRect1.strokeWidth = 3 
    myRoundedRect1:setFillColor(140, 140, 140) 
    myRoundedRect1:setStrokeColor(180, 180, 180) 

    local Name = "Imagename" 


    function uploadBinary (filename, url, onComplete) 

      -- local path = system.pathForFile(filename) 
      -- local fileHandle = io.open(path, "rb") 
      -- if fileHandle then 

      if image then 

         local params = { 
             body = "image_file=" .. mime.b64(tostring(image)) .. "&image_filename="..Name 
          } 


       -- io.close(fileHandle) 

        local function networkListener (event) 
          if (onComplete) then 
              onComplete(event); 
          end 
          return true; 
        end 

        network.request(url, "POST", networkListener, params) 
      end 
    end 

    local function networkListener(event) 
      if (event.isError) then 
        print("Network error!") 
      else 
        -- print ("RESPONSE: " .. event.response) 
        print ("Working") 
      end 
    end 

    local function Upload() 

    uploadBinary (image, "http://www.test1.bugs3.com/Corona.php", networkListener) 
    end 




    myRoundedRect1:addEventListener("tap", Upload) 





    ?php 
      $image_file = fopen($_POST['image_filename'], 'wb'); 

      $encodedData = str_replace(' ','+',$_POST['image_file']); 
      $decocedData = base64_decode($encodedData); 

      fwrite($image_file, $decocedData); 
      fclose($image_file); 


    ? 

回答

0

你重新發明輪子...爲什麼你的車輪不工作?

因爲您在表上使用tostring,所以表上的tostring總是返回表名,而不是其內容。

你想要做什麼,反正是太複雜,我形容這裏,但這裏是你被重新發明輪子:

CoronaLabs.com "how to upload image to server"

:)

相關問題