19

我需要发布一个大约 3mb 的巨大字符串,是否可以使用不使用 url 参数将其发送到 php?

如果我在 url 参数中发送它,则请求达到 url 中的大小限制。

如何解决这个问题?任何线索?

多谢。

其实我是这样做的:

$.ajax({
 type:'POST',
.......
data:{string:3MB_string}
});

我正在使用 PHP 和 jQuery,我希望通过一个简单的 url 将 3mb base64 字符串发送到 php,比如site.com/script.php

该字符串是一个 File Reader API base64 图像

这是字符串的一个示例,但这不会达到大小限制,它不是 3mb,因为粘贴显示 3mb,http://jsfiddle.net/QSyMc/

4

5 回答 5

29

您将需要使用 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
于 2013-07-23T12:23:39.530 回答
11

尝试使用processDatato 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文档:

处理数据(默认值:true)

类型:布尔值

默认情况下,作为对象(从技术上讲,除了字符串之外的任何内容)传入 data 选项的数据将被处理并转换为查询字符串,适合默认的内容类型“application/x-www-form-urlencoded” . 如果要发送 DOMDocument 或其他未处理的数据,请将此选项设置为 false。

于 2013-07-23T12:30:38.080 回答
3

你肯定需要使用 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

使用哪一个取决于您可以访问的内容。

于 2013-07-23T12:28:27.703 回答
3

我遇到了类似的问题。这不是查询字符串的长度,而是我传递给服务器的变量数量。php.ini 将 max_input_vars 字段限制为 1200 个变量。就我而言,我超过了这个数量而不是 post_max_size 数量。不得不回去使查询更有效率并且在限制之下。我想我本可以提高 php.ini 设置,但通过禁用非必要的查询参数,我得到了更好的代码。

于 2015-12-07T21:27:02.063 回答
0

尝试这个:

var str = "YOUR STRING";
$.ajax({
    url: 'YOUR URL',
    type: 'POST',
    data: { mystring: str },
    success: function(result) {
        console.log(result);
    }
});
于 2013-07-23T12:28:07.230 回答