2015-06-02 2 views
0

Я просто отправляю строку base64 через ajax на страницу aspx с кодом C#. Строка никогда не попадает на C#. Он всегда выходит пустым.Не могу отправить строку Base64 на C# через AJAX

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 строка длиной - может ли это быть проблемой? Есть ли лучший способ обработки строк base64 в C#?

UPDATE: мой Аякса метод пост:

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!"); 
     } 

    }); 
+4

Где ваш код Ajax? –

+0

Не думал, что это необходимо, так как сообщения в форме прекрасно. Включая строку base64, которую я использовал ранее. Я вижу, что ответ получает строку, но ее публикация является нулевой каждый раз. – MizAkita

+0

Какой метод ajax используется для отправки данных, POST или GET, если он получен, он не будет формой, но будет частью строки запроса? – Dreamweaver

ответ

0

Другой способ проверить, какой контент вы отправляете является использование Request.Content.ReadAsStringAsync() Результат в вашей C# метод приема..

Вот пример, который я поставил вместе быстро:

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 }); 
Смежные вопросы