0

Мне нужно написать код javascript для плагина construct 2. Ниже мой код:Загрузка фотографий Facebook с помощью JavaScript не работает

Acts.prototype.PublishToWallPHOTO = function (snapshotdata) 
 
\t { 
 
\t \t if (this.runtime.isDomFree || !fbLoggedIn) 
 
\t \t \t return; \t \t 
 
var blob; 
 
\t try 
 
\t { 
 
blob = dataURItoBlob(snapshotdata.replace("data:image/png;base64,", ""),'image/png'); 
 
     } 
 
\t catch(e){console.log(e);} 
 
\t \t \t 
 
\t \t 
 
\t \t FB.api('/me/photos', 'POST', { 
 
     message:'photo description', 
 
     source:blob   
 
    }, function(response) { 
 
\t if (!response || response.error) 
 
\t \t console.error(response); 
 
\t \t \t }); 
 
\t }; 
 
\t 
 
\t 
 
function dataURItoBlob(dataURI,mime) 
 
{ 
 
    var byteString = window.atob(dataURI); 
 
    var ia = new Uint8Array(byteString.length); 
 
    for (var i = 0; i < byteString.length; i++) { 
 
    ia[i] = byteString.charCodeAt(i); 
 
    } 
 
    var blob = new Blob([ia], { type: mime }); 
 
    return blob; 
 
}

для параметра выше кода для "snapshotdata" выглядит следующим образом: «данные: изображения/PNG; base64, iVBORw0KGgoAAAA .......... "

Но мое изображение не было загружено на facebook, используя вышеприведенный код. но с тем же кодом, если я использую url:'http://example.com/abc.png' вместо source:blob, тогда он загружает изображение в заданном URL-адресе успешно. Я пытался найти неправильный код выше, но я не смог найти правильное решение. Скажите, пожалуйста, если кто-нибудь знает проблему с вышеуказанным кодом.

пс: жаль бедного английский

ответ

0

Может быть FormData() делает трюк.

function uploadPicture(response) { 
    if (response.status === 'connected') { 

    var blob = dataURItoBlob(imageHolder.imageElement.dom.src.replace("data:image/png;base64,", ""),'image/png'); 
    var fd = new FormData(); 
    var token = response.authResponse.accessToken; 

    fd.append("access_token",token); 
    fd.append("source\"; filename=\"" + "test.png" + "\"", blob); 
    fd.append("message","Test"); 
    try{ 
     $.ajax({ 
     url:"https://graph.facebook.com/me/photos?access_token=" + token, 
     type:"POST", 
     data:fd, 
     processData:false, 
     contentType:false, 
     cache:false, 
     success:function(data){ 
     console.log("success " + data); 
     }, 
     error:function(shr,status,data){ 
     console.log("error " + data + " Status " + shr.status); 
     }, 
     complete:function(){ 
     console.log("Ajax Complete"); 
     } 
    }); 
    }catch(e){console.log(e);} 
    } 
} 
Смежные вопросы