当我尝试上传大小为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设置得更高,还有其他选择吗?
答案 0 :(得分:0)
由于cmorrissey问题解决了!
我使用了与此主题中描述的方法相同的方法:Convert HTML5 Canvas into File to be uploaded?
将AJAX POST作为FormData发送并将base64数据转换为Uint8Array为blob是在发出POST时不分配PHP内存的关键。但要小心,因为较旧的浏览器可能不支持blob。
谢谢你们;)