我正在使用asp.net 4(c#).
我在 Html 5画布上有一个绘图应用程序,能够添加图像和绘制多种颜色.
我想保存图片drawen到.png文件.
为了做到这一点,我构建了一个WebMethod:
我在 Html 5画布上有一个绘图应用程序,能够添加图像和绘制多种颜色.
我想保存图片drawen到.png文件.
为了做到这一点,我构建了一个WebMethod:
[WebMethod(EnableSession = true)] public static void UploadImage(string imageData,string name) { System.Diagnostics.Debug.WriteLine("here friend!"); }
现在我在页面上有一个按钮,我使用javaScript来调用此方法:
function trySend() { var image = document.getElementById("drawCanvas").toDataURL("image/png"); image = image.replace('data:image/png;base64,',''); var name = document.getElementById("userName").value; $.ajax( { type: 'POST',url: 'CanvasSave.aspx/UploadImage',data: '{ "imageData" : "' + image + '" ' + ',"name" : "' + name + '"}',contentType: 'application/json; charset=utf-8',dataType: 'json',success: function (msg) { location.href = '<%= Page.ResolveUrl("~/ShowCards.aspx") %>'; } }); }
问题是,如果我在画布上绘制一个简单的绘图(某些线条或一个小圆圈),它就会完美无缺.
即使我有一张“邮票”(图片),它仍然可以使用.
如果我画一个“复杂”的图像(不是很复杂!只是一个不同颜色的划痕)或添加2,3张图章它不起作用. WebMethod根本没有被调用,即使我等了很长时间.
我认为它必须对图像的大小做一些事情.似乎如果数据的最终大小减去80 kb(这是我能够保存的图像的最大尺寸)那么它可以工作,但如果预期的图像将比这大,我有一个问题.
同样,所有问题都在JS中而不是在C#代码中.
这是我得到的JavaScript错误:
POST http://localhost:53751/CanvasSave.aspx/UploadImage 500 (Internal Server Error) jquery.min.js:4 f.support.ajax.f.ajaxTransport.send jquery.min.js:4 f.extend.ajax jquery.min.js:4 trySend Default.aspx:21 onclick
这个问题的原因是什么,我该如何解决?
解决方法
正如我在评论中所述,我不是ASP / Windows的人 – 我相信这里的其他人可以澄清,但从我在网上看到的内容,您需要在服务器上执行以下操作:
Add the following to your web.config or mod the settings in the machine.config <system.web> <httpRuntime maxRequestLength="XXXXXX" /> </system.web>
以上应该改变任何请求允许的最大大小,我认为XXXXX值需要以字节为单位给出.现在,这是否是唯一需要更改的配置设置还有待观察. PHP有两个设置需要根据上传和后限制进行更改.
编辑
要更改maxJsonLength,您需要将以下内容添加到服务器上的web.config文件中:
<system.web.extensions> <scripting> <webServices> <jsonSerialization maxJsonLength="5000000"> </jsonSerialization> </webServices> </scripting> </system.web.extensions>
我无法找到默认的maxJsonLength是什么,有人说它是2097152个字符,有些人说102400个字符……无论哪个,5000000应该足够了:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。