我有一些png的base64字符串,我想把它们传递给服务器并保存png文件。
我在javascript中的表单如下:
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();
在php中,代码如下:
$json = Input::get('imgs'); // $json = __POST('imgs');
return $json;
但是,在PHP中返回的$json
没有完成。它是JSON.stringify(base64_list)
的一部分。当我尝试调用json_decode($json)
时,json_last_error()
返回错误代码4。
我在php.ini
中设置了post_max_size = 2048M
,在httpd.conf
中设置了LimitRequestBody 2147483647
。
请帮我找出问题,非常感谢。
更新:JSON.stringify(base64_list).length
返回769283但strlen($json)
返回524288
通过将<input>
更改为<textarea>
来解决。
由于chrome和其他一些浏览器中<input>
的maxlength
实际上是524288,因此设置<input maxlength = '52428800'>
不起作用。解决这个问题的方法是使用CCD_ 16,它似乎没有CCD_ 17的限制。
感谢所有