2015-06-06 69 views
2

所以我試圖通過ajax發送圖像作爲blob。該blob具有正確的類型,大小約爲4.5 kb。我嘗試發送這樣的:通過ajax發送blob數據

document.getElementById("canvas").toBlob(function (blob) { 
    var data = new FormData(); 
    data.append('name', name); 
    data.append('program', YouTomaton.Main.get_CurrentProgram()); 
    data.append('image', blob); 
    $.ajax({ 
     type: "Post", 
     url: "save.php", 
     data: data, 
     processData: false, 
     contentType: false, 
     success: function (result) { 
      if(result != undefined && result.length > 0) 
       alert(result); 
     } 
    }); 
}); 

的recieving頁面看起來是這樣的:

<?php 
include("session.php"); 
writeProgram($_POST['name'], $_POST['program'], $_POST['image']); 
?> 

它告訴我,該指數「形象」找不到。所以不僅數據不會被髮送,而且即使索引也被忽略。我究竟做錯了什麼 ?

編輯:既不toBlob也不toDataURL產生任何東西,但空的PNG。有沒有辦法將數據從framebuffer轉換成base64編碼的jpg或png?

回答

1

閱讀this。然後想想你想做什麼。

如果你可以使用jQuery的插件。我會建議使用FileUpload

對於一個HTML文件的輸入,最小的語法會是這樣:

<input type="file" name="fs" id="fileupload" /> 

和JS腳本:

$('#fileupload').fileupload({ 
       url: "fileupload?additional=data", 
       done: function (e, data) { 
        console.log(data.result); 
       } 
      }).prop('disabled', !$.support.fileInput) 
       .parent().addClass($.support.fileInput ? undefined : 'disabled'); 
+0

在你頂貼答案的鏈接顯示完全我使用的方法... – pixartist

+0

好吧,他的第一個sugesstion怎麼樣?保存畫布和發佈圖像不是你的替代方案? –

+0

看看這個[this](http://stackoverflow.com/a/28323254/1284271) –