无法通过AJAX将Base64字符串发送到C#

时间:2015-06-02 17:58:51

标签: javascript c# asp.net ajax

我只是将一个base64字符串通过ajax发送到一个带有C#代码的aspx页面。字符串永远不会进入C#。它总是空洞的。

ajax正在邮寄请求中发送,所有其他表单字段都可以发布。

我的字符串如下:QmFzZSA2NCDigJQgTW96aWxsYSBEZXZlbG9wZXIgTmV0d29yaw==

将字符串发送到c#代码的方法是:

string signature = Request.Form.Get("newsig");
var pdfContents = PDFHelper.GeneratePDF(pdfPath, formFieldMap, signature);

背后的代码:

string base64image = sig;
//  Convert base64string to bytes array
var newbytes = Convert.FromBase64String(base64image);

有时base64字符串很长 - 这可能是问题吗?有没有更好的方法来处理c#中的base64字符串?

更新:我的ajax post方法:

    var localbase64string = localStorage["signature"];
    var b64 = localbase64string.replace(/^data:image\/(png|jpg);base64,/, "");

    var formData = new FormData($(this)[0]);
    formData.append( 'newsig', b64);

    var sendPost = 'http://xxx.xx/this.aspx';

    $.ajax({
        type: 'POST',
        data: formData,
        processData: false,
        contentType: false,
        timeout: 50000,
        url: sendPost,
        success: function(data){
            alert('Sent!');
            window.location.href = './../mainmenu.html';

       }, error:function (){  
                    alert("something went wrong!");
        }

    });

1 个答案:

答案 0 :(得分:0)

检查您要发送的内容的另一种方法是在C#接收方法中使用 Request.Content.ReadAsStringAsync()。结果

以下是我快速整理的一个例子:

<强> C#:

public IHttpActionResult PostB64Test(string one, string two)
    {
        string b64 = Request.Content.ReadAsStringAsync().Result;            
        return Ok();
    }

<强> JS:

// here's an example url. I'm adding the base64 string to the POST body,
// and the other parameters in the query string.

 var url = '/api/xxx/b64/?one=' +1 +'&two=' +2 +'';

 var b64 = ""; // your base64 string e.g., "9j/4AAQSkZJRgABAg..."
 $http.post(url, { b64: b64 });