1

カメラで撮影した画像やフォト アルバムからサーバーに画像をアップロードする際に少し問題があります。次のコードを使用して画像をサーバーにアップロードしています: しかし、このコードを使用すると、サーバーは次のように画像のテーブル値のみを受信します: table: 0x11791daf0、値の代わりに画像をアップロードするにはどうすればよいですか? また、このコードでテキストをアップロードすることもできますか?

そして最終的に私のサーバー上のPHPスクリプト。

前もって感謝します :)


    ローカル関数 monitorMem(イベント)
      collectgarbage("収集")

      print( "\nMemUsage: " .. (collectgarbage("count")/1000) .. " MB")
      print("テクスチャの使用状況" .. system.getInfo( "textureMemoryUsed" ) / 1000000)

      真を返す
    終わり

    ランタイム:addEventListener("enterFrame", monitorMem)




    ローカル画像


    local mime = "mime" が必要

    local 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( "カメラ", ( 画像と "画像が返されました" ) または "セッションがキャンセルされました" )
            print( "イベント名: " .. event.name )
            print( "target: " .. tostring( image ) )

            もし画像なら
                    -- 画面の中央に画像

                    image.x = display.contentWidth/2
                    画像.y = 59
                    ローカル w = image.width
                    ローカル h = image.height
                    image.xScale = 0.3
                    image.yScale = 0.3
                    print( "w,h = ".. w .."," .. h )
            終わり
    終わり

    ローカルリスナー = 関数 ( イベント )
            もし media.hasSource( media.Camera ) なら
                    media.show( media.Camera, sessionComplete )
            そうしないと
                    native.showAlert("コロナ", "カメラが見つかりません。")
            終わり
            真を返す
    終わり
    myRoundedRect:addEventListener( "タップ", リスナー)


    ローカル 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( ファイル名 )
           -- local fileHandle = io.open( パス, "rb" )
           -- fileHandle の場合

           もし画像なら

                         ローカル パラメータ = {
                                        body = "image_file=" .. mime.b64(tostring( image )) .. "&image_filename="..名前
                            }


               -- io.close(ファイルハンドル)

                    ローカル関数 networkListener ( イベント )
                            if (onComplete) なら
                                            onComplete(イベント);
                            終わり
                            true を返します。
                    終わり

                    network.request( URL、「POST」、networkListener、params)
            終わり
    終わり

    ローカル関数 networkListener( イベント )
            if ( event.isError ) then
                    print( "ネットワークエラー!")
            そうしないと
                  -- 印刷 ( "RESPONSE: " .. event.response)
                  印刷 (「作業中」)
            終わり
    終わり

    ローカル関数 アップロード ()

    uploadBinary ( 画像, "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 に答える