我刚刚开始学习Jquery并且正在使用将在触摸屏设备上使用的asp.net webform应用程序,我需要捕获用户签名,基本上用户将签名并且在点击保存之后,我希望他们的签名是作为图像保存到SQL Server数据库,以便稍后可以在网页上检索并显示它。
我发现了这个问题:Capture Signature using HTML5 and iPad
并且jQuery插件工作得很好,完全符合我的要求。
此处演示:http://szimek.github.io/signature_pad
此处插件:https://github.com/szimek/signature_pad
所以在演示中我看到了#34; save"你会转到一个显示签名签名图像的新标签,我注意到网址是这样的
数据:图像/ PNG; BASE64,iVBORw0KGgoAAAANSUhEUgAAApIAAAE + CAYAAAA + vvBuAAAgAElEQVR4Xu3df8i37V0X8I / l0GY5BzZdiWslKhnNUaBR62lBP0htjuiHfz0uROgPmQsH / hE8jiKKjLl / IoLa9k + NMOYyhCRamyM0WI9bUBst5kzbUNfjxBlmaLy389jO + 3Q ......
这个网址是什么意思?
将使用什么类型的变量将其存储在数据库表中(nvarchar,binary ...)
3(主要问题)。如何在C#按钮单击事件后面的代码中获取这些数据文本,以将它们存储到字符串变量中以用于其他目的。有人可以提供一个简单的例子,我可以从那里去吗?
如果我遗失了什么请告诉我,因为我正在查看.html文件和该插件的演示项目中的.js文件,我迷路了。
答案 0 :(得分:4)
该网址为BASE64格式。您可以在图像标记的SRC属性中使用该长字符串,并将显示该字符串。
为了获得更好的性能,推荐的存储照片的方法是将图像存储在磁盘上(使用某种服务器端语言),然后将文件名保存为数据库中的CHAR或TEXT
不太确定。我以前从未使用过该库。
答案 1 :(得分:2)
这是Base64编码的图像。
data:
表示数据是关注而不是网址image/png;
指定数据应作为base64,
表示数据的编码类型由于base64仅使用ASCII字符,因此varchar(MAX)
适合存储。无需nvarchar
。我通常只存储base64编码(逗号后面的最后一部分),并将mime类型(例如image/png
)保存在一个单独的字段中。
C#中有很多选项。如果单独存储base64部分,则可以简化代码。
byte[] imageBytes = System.Convert.FromBase64String(base64data)
将其转换为图像服务器端,并从字节数组创建图像并输入。<img src="@Html.Raw("data:"+ mimetype + "base64," + base64data)"/>
<input type="text">
并将值放在那里。答案 2 :(得分:1)
除了TrueBlueAussie的回答:
在CodeBehind中获取字符串的最简单方法是:
使用ASP声明HiddenField并为其分配静态ID。 (静态ID很重要,因为ASP通常会为每个控件分配自动生成的ID,这很难预测。)
以SignaturePad将输出base64图像字符串写入此HiddenField的方式塑造JavaScript函数。例如,您可以使用调用SignaturePad的导出功能的“验证”按钮。
将字符串写入HiddenField后,请在CodeBehind上将其读回。为此,您可以使用其他按钮,例如“保存”。
当然有其他选择更安全/多功能/适当,但这可能是一个很好的起点。