2017-06-23 76 views
0

即时通讯使用网络摄像头捕捉到的用户个人资料图片,然后我上传使用XMLHttpRequest的,像这样的图像服务器:发送图像

document.getElementById('upload').addEventListener('click', function() { 
    var image = canvas.toDataURL('image/jpeg', 1.0); 
    var request = new XMLHttpRequest(); 
    var fd = new FormData(); 
    fd.append('picture', image); 
    request.open('POST', 'upload.php'); 
    request.onload = function() { 
     if (request.status == 200) { 
      console.log('all done: '); 
     } else { 
      console.log('Nope'); 
     } 
    }; 
    request.setRequestHeader('Content-Type', 'multipart/form-data'); 
    request.send(fd); 
}); 

我不是使用形式,即时从得到的图像canva html元素在这一行:

var image = canvas.toDataURL('image/jpeg', 1.0); 

我觉得js部分都可以,控制台显示数据发送。 在PHP中我尝试将图像和存储操作的服务器目录中,像这样:

<?php 
$info = pathinfo($_FILES['picture']['name']); 
$ext = $info['extension']; // get the extension of the file 
$newname = "perfil.".$ext; 

$target = 'uploads/'.$newname; 
move_uploaded_file($_FILES['picture']['tmp_name'], $target); 
?> 

,但图像号实际存储在上面的代码中指定的文件夹中,我不知道我在做什么错,或者东西逃脱了我。

回答

1
var image = canvas.toDataURL('image/jpeg', 1.0); 
        ^^^^^^^^^ 

你得到一个数据URL。这不是一个文件。

$info = pathinfo($_FILES['picture']['name']); 

由于它不是一个文件,它不会在$_FILES或有一个文件名。

您可以从$_POST['picture']读取数据。然后This question涵盖将数据URL转换为文件的过程。

+0

哦,是的,这就是它...我没有得到一个文件,谢谢! –

+0

我遵循你获得的帖子,但现在我得到一个空的图像文件,0kb。 –