将大型画布数据发送到服务器

时间:2015-03-02 23:39:55

标签: c# ajax canvas webmethod todataurl

我尝试将画布数据作为图像发送,但是当图像很大时,它不发送数据,所以我尝试发送作为表单数据,但我仍然坚持接收代码。代码隐藏作为htmlinputelementobject接收。我该怎么收到它?有人可以帮忙。

HTML:

var data = canvas.toDataURL("image/png");
    data = data.substr(data.indexOf(',') + 1).toString();
var dataInput = document.createElement("input");
    dataInput.setAttribute("name", "imgdata");
    dataInput.setAttribute("value", data);
    dataInput.setAttribute("type", "hidden");
var myForm = document.createElement("form");
    myForm.appendChild(dataInput);

的Ajax:

$.ajax({
    url: "HTML5Camera.aspx/Upload",
    type: "POST",
    // data : $('form').serialize(),
    data: "{ 'image': '" + data1 + "'}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data, status) {
        alert('success')
    }
});

代码隐藏:

[WebMethod(EnableSession = true)]
    public static string Upload(string image)    

    {

    }

2 个答案:

答案 0 :(得分:0)

尝试在web.config中调整请求限制:

<system.web>
    ...
    <httpRuntime maxRequestLength="8192" ... />

这里以8 mb为例(...表示您可能在文件/标签中有其他信息)。所有base-64编码文件的大小都会增加33%,这在设置最大限制时需要考虑。

(将示例复制到帖子中可能会出错,但data1未在任何地方定义,参见ajax方法。)

更新表示完整性(来自评论):

<system.web.extensions> 
  <scripting> 
    <webServices> 
      <jsonSerialization maxJsonLength="2147483647"/> 
    </webServices>
  </scripting> 
</system.web.extensions> 

答案 1 :(得分:0)

继承代码以增加web.config中的json序列化

代码:

 <system.web.extensions>
 <scripting>
 <webServices>
    <jsonSerialization maxJsonLength="2147483647"/>
 </webServices>
 </scripting>
 </system.web.extensions>