我只是将一个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!");
}
});
答案 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 });