0

ウェブカメラから取得した画像を含むキャンバスがあります。ポストバックを回避しながら、その画像をサーバーに送信したいと考えています。(ポストバックを使用すると、クライアントは画像を保存するたびにウェブカメラの使用を検証する必要があり、私はそれを望んでいません.:()

Jスクリプトはこちら

function sendPicture() {
        event.preventDefault();
        var b64 = document.getElementById("canvas").toDataURL("image/png");
        b64 = b64.replace('data:image/png;base64,', '');
        PageMethods.SaveImage(b64, success, error);
    }

    function success()
    { console.log("hoorah"); }

    function error()
    { console.log("boo"); }

これはまだ書かれていないコードビハインドですが、とにかく内部に到達することはないので問題ありません。

[WebMethod]
    public static bool SaveImage(string image)
    {
        return false;

    }

b64 が長すぎるため、コードは WebMethod に到達しません。(2000字以上) やってみた

var imgObj = new Image();
        imgObj.src = b64;
        PageMethods.SaveImage(imgObj, success, error);

機能していません。

助けてください。:(

編集:ページのhtmlを入れるのを忘れました

 <div class="formRow">
        <input type="button" id="snap" value="Prendre photo" />
        <input type="button" id="send" value="Enregistrer Photo" />
    <br />
    <video id="video" width="320" height="240" autoplay></video>
    <canvas id="canvas" width="320" height="240"></canvas>

    </div>
4

1 に答える 1

1

新しいaspページを作成し、b64 byパラメーターをそのページに送信することで、なんとかやり遂げました。

新しいページ :

public partial class SaveImage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!string.IsNullOrEmpty(Request.Form["data"]))
        {
            string b64 = Request.Form["data"];
            byte[] binary = Convert.FromBase64String(b64);
             writeToFile(binary);
        }
    }

    public void writeToFile(byte[] array)
    {
        var fs = new BinaryWriter(new FileStream(Server.MapPath("~") + "/Images/Photo/" + Session["IdParticipantPhoto"].ToString() + ".png", FileMode.Append, FileAccess.Write));
        fs.Write(array);
        fs.Close();
    }
}

Jスクリプト:

function sendPicture() {
    event.preventDefault();
    var b64 = document.getElementById("canvas")
    .toDataURL("image/png");
    b64 = b64.replace('data:image/png;base64,', '');
    console.log("Image   " + b64);
    $.ajax({
        type: 'POST',
        url: '/LAN/SaveImage.aspx',
        data: { "data": b64 },
        success: function (msg) {
            alert("Uploaded successfully");
        }
    });
}
于 2013-02-19T13:36:44.583 に答える