source

Jquery Ajax - 막대한 문자열 값 게시

manycodes 2023. 10. 28. 08:03
반응형

Jquery Ajax - 막대한 문자열 값 게시

3mb 정도의 큰 문자열을 올려야 하는데 url param이 아닌 php로 보낼 수 있나요?

url params로 보내면 url의 크기 제한에 도달합니다.

어떻게 하면 이 문제를 해결할 수 있을까요?무슨 단서라도?

정말 감사해요.

사실 저는 이렇게 하고 있습니다.

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

저는 PHP와 jQuery를 사용하고 있고, 3mb base64 문자열을 간단한 url로 php로 보내고 싶습니다.site.com/script.php

문자열이 File Reader API base64 이미지입니다.

이것은 문자열의 예이지만 이것은 크기 제한에 도달하지 않을 것입니다. 3mb가 아니기 때문에 3mb를 보여주는 것은 덜 문제가 됩니다. http://jsfiddle.net/QSyMc/

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값을 설정할 수 있습니다.

#set max post size
php_value post_max_size 20M

사용해보기processData당신의 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.jax 설명서에서:

프로세스데이터(기본값: true)

유형: 부울

기본적으로 개체(기술적으로 문자열이 아닌 다른 것)로 데이터 옵션에 전달된 데이터가 처리되고 쿼리 문자열로 변환되며 기본 컨텐츠 유형인 "application/x-www-form-urlencoded"에 적합합니다.DOM 문서 또는 기타 처리되지 않은 데이터를 보내려면 이 옵션을 false로 설정합니다.

저도 비슷한 문제를 발견했습니다.쿼리 문자열의 길이가 아니라 서버에 전달하는 변수의 개수였습니다.php.ini는 max_input_vars 필드에 변수 1200개로 제한을 둡니다.저의 경우 post_max_size 금액보다 그 금액을 초과하고 있었습니다.다시 돌아가서 쿼리를 더 효율적으로 만들고 한계를 넘지 않도록 해야 했습니다.php.ini 설정을 올릴 수도 있었지만 필수가 아닌 쿼리 매개 변수를 비활성화함으로써 더 나은 코드를 얻을 수 있었습니다.

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

어떤 것을 사용할지는 접근할 수 있는 것에 따라 달라집니다.

시도해 보기:

var str = "YOUR STRING";
$.ajax({
    url: 'YOUR URL',
    type: 'POST',
    data: { mystring: str },
    success: function(result) {
        console.log(result);
    }
});

언급URL : https://stackoverflow.com/questions/17810063/jquery-ajax-post-huge-string-value

반응형