2016-03-28 6 views
0

Ich habe einige Base64-Zeichenfolgen von PNG und ich möchte sie an den Server übergeben und speichern Sie die PNG-Dateien.Javascript posten JSON-Daten mit Formular, aber die JSON ist nicht in PHP

in Javascript Meine Form sieht wie folgt aus:

var $form = $("#downloadForm"); 
if ($form.length == 0) { 
    $form = $("<form>").attr({ "target": "_blank", "id": "downloadForm", 
     "method": "POST", "action": "keyword-cmp-download" }).hide(); 
    $("body").append($form); 
} 
$form.find("input").remove(); 
var args = {'imgs': JSON.stringify(base64_list)}; 
console.log(JSON.stringify(base64_list)); 
for (var field in args) { 
    $form.append($("<input>").attr({"value":args[field], "name":field})); 
} 
$form.submit(); 

Und in php, der Code wie folgt aussieht:

$json = Input::get('imgs'); // $json = __POST('imgs'); 
return $json; 

jedoch die $json in PHP zurückgegeben nicht abgeschlossen ist. Es ist ein Teil von JSON.stringify(base64_list). Und wenn ich versuche, json_decode($json) zu nennen, json_last_error() gibt Fehlercode 4.

I post_max_size = 2048M in php.ini und LimitRequestBody 2147483647 in httpd.conf gesetzt haben.

Bitte helfen Sie mir, das Problem herauszufinden, vielen Dank.

Update: JSON.stringify(base64_list).length kehrt 769.283 aber strlen($json) kehrt 524288

+0

Ich bin nicht sicher, was der Punkt des 'args' Objekt ist, wird es nur eine einzige Eigenschaft' imgs' enthalten, die die json codierte Zeichenfolge – andrew

+2

Bitte näher auf die „die $ wird json ist in PHP zurückgekehrt. – Sammitch

+0

"das $ json, das in PHP zurückgegeben wird, ist nicht abgeschlossen": Zum Beispiel ist das Ergebnis von 'console.log (JSON.stringify (base64_list))' '['abcdefghijklmn']', aber '$ json' ist etwas wie' ' [abcdefghijkl''. Da Base64 String so lang ist, bezweifle ich, ob es die Grenze von Javascript Post oder PHP ist? – wzpfish

Antwort

0

durch Änderung Gelöst <input>-<textarea>.

Da die maxlength<input> in Chrome und einigen anderen Browsern tatsächlich 524288 ist, und <input maxlength = '52428800'> nicht funktionieren. Der Weg, um dies zu lösen ist <textarea>, die kein Limit von maxlength haben scheint.

Dank all

+0

Beachten Sie, dass an Ihren Daten nichts falsch ist, nur die Ausgabe in HTML. – PHPglue

Verwandte Themen