Javascript 从Jscript到服务器的映像,无需使用base64进行回发
我有一张画布,上面有一张从网络摄像头拍摄的照片。 我想将该图像发送到我的服务器,同时避免任何回发。(通过回发,它强制客户端在每次保存图像时验证网络摄像头的使用,我不希望这样做。:) 这是JscriptJavascript 从Jscript到服务器的映像,无需使用base64进行回发,javascript,asp.net,base64,webmethod,Javascript,Asp.net,Base64,Webmethod,我有一张画布,上面有一张从网络摄像头拍摄的照片。 我想将该图像发送到我的服务器,同时避免任何回发。(通过回发,它强制客户端在每次保存图像时验证网络摄像头的使用,我不希望这样做。:) 这是Jscript function sendPicture() { event.preventDefault(); var b64 = document.getElementById("canvas").toDataURL("image/png"); b64 = b6
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;
}
代码永远无法到达WebMethod,因为b64太长了。(超过2000个字符)
我试过了
他不工作了
请帮忙(
编辑:忘记将页面放入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>
我通过创建一个新的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();
}
}
Jscript:
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");
}
});
}
你有没有尝试过将文章发送到WCF服务而不是PageMethod?这能解决base64变量太长的问题吗?因为我尝试过从函数向webmethod发送字符串,它工作得很好。我看到的问题实际上是b64的长度。WCF服务还有什么作用?我还没有使用过它。
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");
}
});
}