我需要POST一个大约3mb的巨大字符串,是否可以使用not url params将其发送到php?
如果我使用url params发送请求,请求达到url中的大小限制。
如何解决这个问题?任何线索?
非常感谢。
其实我是这样做的:
$.ajax({
type:'POST',
.......
data:{string:3MB_string}
});
我正在使用PHP和jQuery,我想在一个简单的网址上将3mb base64字符串发送到php,例如site.com/script.php
该字符串是File Reader API base64图像
这是一个字符串的示例,但这不会达到大小限制它不是3mb更少导致麻烦粘贴,以显示3mb,http://jsfiddle.net/QSyMc/
答案 0 :(得分:28)
您需要使用POST请求:
$.ajax({
url: '/script.php',
type: 'POST',
data: { value: 'some huge string here' },
success: function(result) {
alert('the request was successfully sent to the server');
}
});
并在服务器端脚本中检索值:
$_POST["value"]
此外,您可能需要增加允许的请求大小。例如,在您的.htaccess
文件或php.ini
中,您可以设置post_max_size
值:
#set max post size
php_value post_max_size 20M
答案 1 :(得分:7)
尝试使用processData
为false并使用JSON的字符串表示
var data = { "some" : "data" };
$.ajax({
type: "POST",
url: "/script",
processData: false,
contentType: 'application/json',
data: JSON.stringify(data),
success: function(r) {
console.log(r);
}
});
来自jQuery.ajax文档:
processData (默认值:true)
类型:布尔值
默认情况下,传入的数据 作为对象的数据选项(从技术上讲,除了一个以外的任何东西) string)将被处理并转换为查询字符串,拟合 到默认内容类型“application / x-www-form-urlencoded”。如果 要发送DOMDocument或其他未处理的数据,请设置此项 选项为false。
答案 2 :(得分:3)
我遇到了类似的问题。它不是查询字符串的长度,而是我传递给服务器的变量数。 php.ini将max_input_vars字段的限制设置为1200个变量。在我的情况下,我超过了那个数量而不是post_max_size数量。不得不返回并使查询更有效率和限制。我想我可以提高php.ini设置,但是我通过禁用非必要的查询参数来获得更好的代码。
答案 3 :(得分:2)
你肯定需要使用POST方法。如果字符串仍然很大,请检查php.ini文件以找出最大POST参数大小。
要更改此值,请执行以下任一操作:
<强> 1。更改php.ini中的值
post_max_size=20M
upload_max_filesize=20M
<强> 2。或将此代码添加到.htaccess文件
php_value post_max_size 20M
php_value upload_max_filesize 20M
使用哪一个取决于您有权访问的内容。
答案 4 :(得分:-1)
试试这个:
var str = "YOUR STRING";
$.ajax({
url: 'YOUR URL',
type: 'POST',
data: { mystring: str },
success: function(result) {
console.log(result);
}
});