AjaxForm Submit отправка пустых значений - PullRequest
0 голосов
/ 04 августа 2020

У меня странная проблема с AjaxForm Submit. Проект, который мне нужно отлаживать, должен загрузить выбранный файл на сервер (PHP), используя Ajax, чтобы можно было отслеживать ход загрузки. Я убедился, что мой php .ini разрешает POST и загрузку размером 100+ МБ, max_execution_time 5 минут. Несмотря на все это, если я загружаю файл размером менее 9 МБ (включая 8,9 МБ), все в порядке, файл загружается. 9 МБ - это «иногда работает, иногда нет), и все, что превышает 10 МБ, гарантированно вызовет проблемы. В приведенном ниже коде (короткая версия) я добавлю комментарий к месту, которое вызывает проблемы, пожалуйста, дайте мне знать, что вы думаете об этом может быть:

HTML (опущены некоторые вещи, такие как индикатор выполнения, чтобы код было легко читать):

<form action="#" method="post" id="publisher-box-focus">
      ...controls for choosing a file etc....
     <button type="button" onclick="Wo_GetPRecordLink()" id="publisher- 
            button"><span>Share</span></button>
     <input type="hidden" name="hash_id" value="some_generated_id_is_here">
</form>

JS:

function Wo_GetPRecordLink() {
     $('form.post').submit();
}

$('form.post').ajaxForm({
    url: '<url>/myPhp.php',
    beforeSend: function () {
      var percentVal = '0%';
      bar.width(percentVal);
      percent.html(percentVal);
    },
    uploadProgress: function (event, position, total, percentComplete) { ***This works fine
      var percentVal = percentComplete + '%';
      bar.width(percentVal);
      $('#progress').slideDown(200);
      percent.html(percentVal); 
    },
    success: function (data) {
      if(data.status == 200) {
        //My PHP does return 200 after file upload is complete but it gets incomplete POST
             data thus sends no data response i'm expecting!
      } 
    }
  });

PHP:

<?php
$hash_id = '';
if (!empty($_POST['hash_id'])) {
    $hash_id = $_POST['hash_id'];
}
echo "HASH IS: ".$hash_id; //*****HERE when uploading big files (and only files > 9MB 
 $hash_id is empty even thou Chrome Inspector shows that hidden input value is set 
 properly! This happens only for files bigger than 9 MB!
...

Были ли у вас проблемы такого рода? У вас есть идеи, что может их вызывать?

Сервер - это экземпляр ec2 Amazon.

PHP версия 5.5.38

1 Ответ

0 голосов
/ 04 августа 2020

Если настройки вашего сервера верны, проблема в методе ajax post.

Пожалуйста, не забывайте атрибут имени входного файла:)

Можете ли вы попробовать это?

HTML:

<form action="#" method="post" id="publisher-box-focus">
  ...controls for choosing a file etc....
 <input type="hidden" name="hash_id" value="some_generated_id_is_here">
 <button type="button" onclick="Wo_GetPRecordLink(event)" id="publisher-button"><span>Share</span></button>
</form>

JS:

function Wo_GetPRecordLink(e) {
    e.preventDefault();
    $.ajax({
        type: "POST",
        url: '<url>/myPhp.php',
        data: $('#publisher-box-focus').serialize(),
        beforeSend: function () {
            var percentVal = '0%';
            bar.width(percentVal);
            percent.html(percentVal);
        },
        uploadProgress: function (event, position, total, percentComplete) {
            var percentVal = percentComplete + '%';
            bar.width(percentVal);
            $('#progress').slideDown(200);
            percent.html(percentVal);
        },
        success: function (data) {
            if (data.status == 200) {
            
            }
        }
    });
}
...