我需要为construct 2插件编写一个javascript代码。下面是我的代码:
Acts.prototype.PublishToWallPHOTO = function (snapshotdata)
{
if (this.runtime.isDomFree || !fbLoggedIn)
return;
var blob;
try
{
blob = dataURItoBlob(snapshotdata.replace("data:image/png;base64,", ""),'image/png');
}
catch(e){console.log(e);}
FB.api('/me/photos', 'POST', {
message:'photo description',
source:blob
}, function(response) {
if (!response || response.error)
console.error(response);
});
};
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"的上述代码参数如下:"data:image/png;base64,iVBORw0KGgoAAAA…………"
但我的图片并没有用上面的代码上传到脸书上。但使用相同的代码,如果我使用CCD_ 1而不是CCD_。我试图找出上面代码的错误,但我找不到合适的解决方案。如果有人知道以上代码的问题,请告诉我。
ps:很抱歉英语不好
也许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);}
}
}