2017-06-23 106 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。 –