2016-02-12 20 views
0

我有<canvas>,我得到的結果是base64如何發送文件沒有輸入[type =「file」]

canvas.toDataURL('image/png'); 

我想發送到服務器,但不發送base64。我想發送文件PNG。可能嗎?

謝謝JoeJoe87577 /工作例如:

var dataurl ='data:image/png;base64,i........I=' 
    function dataURLtoBlob(dataurl) { 
     var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1], 
      bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n); 
     while(n--){ 
      u8arr[n] = bstr.charCodeAt(n); 
     } 
     return new Blob([u8arr], {type:mime}); 
    } 

    //var dataurl = canvas.toDataURL() 
    var blob = dataURLtoBlob(dataurl); 
    var fd = new FormData(); 
    fd.append("key", "6528448c258cff474ca9701c5bab6927"); 
    fd.append("file", blob); 
    var xhr = new XMLHttpRequest(); 
    xhr.open('POST', 'http:/', true); 
    xhr.onload = function(){ 
     //alert('upload complete'); 
    }; 
    xhr.send(fd); 
+1

看看[這個](http://stackoverflow.com/questions/16245767/creating-a-blob-from-a-base64-string-in-javascript)。使用提供的信息,您將從base64字符串中獲取二進制數據。然後,您可以通過[ajax](http://api.jquery.com/jquery.ajax/)或[XMLHttpRequest](https://developer.mozilla.org/de/docs/Web/API/)發送數據XMLHttpRequest的)。 – JoeJoe87577

+0

讓豌豆答案,我想接受他 – zloctb

回答

1

是的,你可以將圖像轉換爲base64字符串後,將其作爲AJAX POST請求,檢查此demo

然後你就可以做出ajax post request

xhttp.open("POST", "ajax_test.asp", true); 
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
xhttp.send(imageBase64Data); 
相關問題