1

我在将使用相机或相册拍摄的图像上传到服务器时遇到了一个小问题。我正在使用以下代码将图像上传到我的服务器:但是使用此代码,我的服务器只接收图像的表值,如下所示:表:0x11791daf0,我怎样才能让它上传图像而不是值?是否也可以使用此代码上传文本?

最后是我服务器上的 PHP 脚本。

先感谢您 :)


    本地函数monitorMem(事件)
      收集垃圾(“收集”)

      print("\nMemUsage:" .. (collectgarbage("count")/1000) .." MB")
      print("纹理使用" .. system.getInfo("textureMemoryUsed") / 1000000)

      返回真
    结尾

    运行时:addEventListener(“enterFrame”,monitorMem)




    本地图像


    本地 mime = 需要“mime”

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

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

    本地 sessionComplete = 函数(事件)
            图像 = 事件.目标

            打印(“相机”,(图像和“返回图像”)或“会话被取消”)
            print("事件名称:" .. event.name )
            打印(“目标:”.. tostring(图像))

            如果图像那么
                    -- 屏幕居中图像

                    image.x = display.contentWidth/2
                    图像.y = 59
                    本地 w = image.width
                    本地 h = image.height
                    图像.xScale = 0.3
                    图像.yScale = 0.3
                    print("w,h = "..w ..","..h)
            结尾
    结尾

    本地侦听器 = 函数(事件)
            如果 media.hasSource( media.Camera ) 那么
                    media.show(media.Camera, sessionComplete)
            别的
                    native.showAlert(“电晕”,“找不到相机。”)
            结尾
            返回真
    结尾
    myRoundedRect:addEventListener("tap", listener)


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

    本地名称 = “图像名称”


    函数uploadBinary(文件名,url,onComplete)

           -- 本地路径 = system.pathForFile( 文件名 )
           -- 本地文件句柄 = io.open(path, "rb" )
           -- 如果是文件句柄 那么

           如果图像那么

                         本地参数 = {
                                        body = "image_file=" .. mime.b64(tostring( image )) .. "&image_filename="..Name
                            }


               -- io.close( 文件句柄 )

                    本地函数networkListener(事件)
                            如果(onComplete)那么
                                            完成(事件);
                            结尾
                            返回真;
                    结尾

                    network.request(url, "POST", networkListener, params)
            结尾
    结尾

    本地函数网络监听器(事件)
            如果 ( event.isError ) 那么
                    print("网络错误!")
            别的
                  -- 打印(“响应:” .. event.response)
                  打印(“工作”)
            结尾
    结尾

    本地函数上传()

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




    myRoundedRect1:addEventListener(“点击”,上传)





    ?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);


    ?

4

1 回答 1

0

你在重新发明轮子......为什么你的轮子不起作用?

因为您在表上使用 tostring,所以表上的 tostring 始终返回表名,而不是其内容。

你想做的事情,无论如何我在这里描述的太复杂了,但这是你正在重新发明的轮子:

CoronaLabs.com “如何将图像上传到服务器”

:)

于 2012-10-08T14:01:39.300 回答