json Webservice将传递将转换为图像的Base64代码

规格:

  • Server 2012
  • 框架3.5

我已经在服务器http://ipaddress/eSignatureWS.asmx?op=SaveImg.部署了我的web服务http://ipaddress/eSignatureWS.asmx?op=SaveImg.

问题 :当我将ajax dataType更改为“json”或“text”时,它有一个内部服务器错误,但是当我使用“script”时,它不会有错误,但它不会保存图像。 当我在本地尝试它时使用“json”/“text”,但是当我部署它时将不再起作用。

所以这是我的代码:

jQuery的

 function signatureSave() { var canvas = document.getElementById("newSignature"); // save canvas image as data url (png format by default) var data = canvas.toDataURL("image/png"); var signatureData = data.replace(/^data:image\/(png|jpg);base64,/, ""); var donum = "sampleImg"; //imagename $.support.cors = true; //var imgData = JSON.stringify(signatureData); $.ajax({ type: "Post", async: false, url: "http://ipaddress/eSignatureWS.asmx?op=SaveImg", data: { "filename": donum, "imgBit": signatureData }, dataType: "json", success: function (data) { //alert(data); if (data.match("true")) { document.getElementById('errorImage').innerHTML = "Successfully Submitted!"; } else { document.getElementById('errorImage').innerHTML = "Error occured."; } }, error: function (XMLHttpRequest, testStatus, errorThrown) { document.getElementById('errorImage').innerHTML = errorThrown; alert(XMLHttpRequest + testStatus + errorThrown); } }) 

网络服务

 [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public string SaveImg(string filename, string imgBit) { try { string filepath = WebConfigurationManager.AppSettings["ImgLocation"].ToString(); string imgPath = filepath + filename + ".png"; //creates a png image signature using (FileStream fs = new FileStream(imgPath, FileMode.Create)) { using (BinaryWriter bw = new BinaryWriter(fs)) { byte[] data = Convert.FromBase64String(imgBit); bw.Write(data); bw.Close(); JavaScriptSerializer js = new JavaScriptSerializer(); string strJSON = js.Serialize("true"); return strJSON; } } } catch (Exception ex) { } } 

检查编辑部分!

我猜你不知道在ASP.NET中默认设置为100KB的“maxJsonLength”属性。 我不知道这一点,直到我不得不对同一主题进行最新的搜索:)

在Web.Config文件中,您可以根据需要更改此默认限制。

          

那个是1.000.000字节,大约是1MB。 如果需要通过Web服务发送更大的文件,可以设置更高的值。

检查一下,如果有效,请告诉我。

编辑:我最近发现这不是你应该做的唯一设置。 您还应该在web.config文件中设置httpruntime节点的“maxRequestLength”属性,如:

    

这里,maxRequestLength以KB为单位,因此10000意味着~10MB(完全为9,77MB)。 如果用户带宽较低且请求长度要求大于10MB,则可以将executionTimeout属性设置为更高的值。 那是几秒钟,所以10800意味着3个小时。

我想你在这里得到了照片。

干杯!