无法通过Ajax Post将base64视频发送到PHP

时间:2015-04-28 18:02:51

标签: javascript php jquery ajax video

当我尝试上传大小为16.9 MB的MP4视频时,使用ajax异步发布到PHP文件时,控制台会触发错误说明:POST http://website.com/proc_vids.php net :: ERR_EMPTY_RESPONSE

我知道这个问题与PHP memory_limit有关,因为当我设置为200 MB它一切都很好但是当我将其更改回100 MB时会发生此错误。

我甚至无法将POST发送到PHP变量,因为只要进行了ajax post调用,就会在服务器端(PHP)上执行任何操作时触发错误。这是ajax邮政编码:

var proc = 1;
video = document.getElementById('preview_video').src;
    $.ajax({
        'async': true,
        'type': "POST",
        'global': false,
        'dataType': 'json',
        'url': "proc_vids.php",
        'data': {proc: proc, video: video}
    }).done(function () {
            //Do something
            });

PHP代码:

$proc = $_POST['proc'];

if ($proc == 1){

//$video = $_POST['video'];
}

正如您所看到的,我评论了将POST传递给变量但仍然触发错误的行。

如何对包含base64代码的视频变量进行扩展以消耗如此高的内存级别? 如果没有将memory_limit设置得更高,还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

由于cmorrissey问题解决了!

我使用了与此主题中描述的方法相同的方法:Convert HTML5 Canvas into File to be uploaded?

将AJAX POST作为FormData发送并将base64数据转换为Uint8Array为blob是在发出POST时不分配PHP内存的关键。但要小心,因为较旧的浏览器可能不支持blob。

谢谢你们;)