无法通过 Ajax Post 将 base64 视频发送到 PHP
Unable to send base64 video through Ajax Post to PHP
当我尝试上传大小为 16.9 MB 的 MP4 视频时,使用 ajax 异步 post 到 PHP 文件,控制台触发错误消息:POST http://website.com/proc_vids.phpnet::ERR_EMPTY_RESPONSE
我知道这个问题与 PHP memory_limit 有关,因为当我设置为 200 MB 时一切正常,但是当我将其更改回 100 MB 时,会发生此错误。
我什至无法将 POST 获取到 PHP 变量,因为一旦 ajax post 调用就触发了错误,甚至没有做服务器端的任何内容(PHP)。这是 ajax post 代码:
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 设置得更高,是否有其他选择?
感谢 cmorrissey,问题已解决!
我使用了与此线程中描述的相同的方法:Convert HTML5 Canvas into File to be uploaded?
将AJAXPOST作为FormData发送,将base64数据转为Uint8Array转成blob是POST时不分配PHP内存的关键.但要小心,因为较旧的浏览器可能不支持 blob。
谢谢你们 ;)
当我尝试上传大小为 16.9 MB 的 MP4 视频时,使用 ajax 异步 post 到 PHP 文件,控制台触发错误消息:POST http://website.com/proc_vids.phpnet::ERR_EMPTY_RESPONSE
我知道这个问题与 PHP memory_limit 有关,因为当我设置为 200 MB 时一切正常,但是当我将其更改回 100 MB 时,会发生此错误。
我什至无法将 POST 获取到 PHP 变量,因为一旦 ajax post 调用就触发了错误,甚至没有做服务器端的任何内容(PHP)。这是 ajax post 代码:
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 设置得更高,是否有其他选择?
感谢 cmorrissey,问题已解决!
我使用了与此线程中描述的相同的方法:Convert HTML5 Canvas into File to be uploaded?
将AJAXPOST作为FormData发送,将base64数据转为Uint8Array转成blob是POST时不分配PHP内存的关键.但要小心,因为较旧的浏览器可能不支持 blob。
谢谢你们 ;)