Javascript Can';t通过AJAX将Base64字符串发送到C#
我只是通过ajax将base64字符串发送到一个带有C#代码的aspx页面。这根绳子永远到不了C#。它总是空出来的 ajax将在post请求中发送,所有其他表单字段都将在post fine中发送 我的字符串看起来像:Javascript Can';t通过AJAX将Base64字符串发送到C#,javascript,c#,asp.net,ajax,Javascript,C#,Asp.net,Ajax,我只是通过ajax将base64字符串发送到一个带有C#代码的aspx页面。这根绳子永远到不了C#。它总是空出来的 ajax将在post请求中发送,所有其他表单字段都将在post fine中发送 我的字符串看起来像:qmfzzsa2ncdigjqgtw96awxsysbezzxzlbg9wzxigtmv0d29yaw== 将字符串发送到c#代码隐藏的方法是: string signature = Request.Form.Get("newsig"); var pdfContents = PDFH
qmfzzsa2ncdigjqgtw96awxsysbezzxzlbg9wzxigtmv0d29yaw==
将字符串发送到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!");
}
});
检查发送内容的另一种方法是在C#receiving方法中使用Request.content.ReadAsStringAsync().Result 下面是我快速整理的一个示例: C#:
public IHttpActionResult PostB64Test(string one, string two)
{
string b64 = Request.Content.ReadAsStringAsync().Result;
return Ok();
}
// 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 });
JS:
public IHttpActionResult PostB64Test(string one, string two)
{
string b64 = Request.Content.ReadAsStringAsync().Result;
return Ok();
}
// 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 });
你的ajax代码在哪里?我不认为这是必要的,因为表单发布得很好。包括我以前使用过的base64字符串。我可以看到响应获取字符串,但每次都将其发布为空。使用哪种ajax方法发送数据,POST或GET,如果是GET,则它将不是表单,而是查询字符串的一部分?@Dreamweaver我刚刚用ajax调用更新了我的初始发布。这是一个将表单数据从html页面发送到带有c#codebehind的aspx页面的简单帖子。所有其他数据发布都没有问题,但base64字符串始终为空。将b64替换为类似“dummy”的小文本,然后查看是否在服务器端得到它。如果是,那么b64有问题。(最大投递字节大小等)如果不是,则说明投递机制/页面方法等有问题。此外,请尝试在Fiddler中查看请求/响应。