Yammer附属

时间:2015-06-04 08:35:46

标签: javascript yammer

我正在尝试通过我的应用程序发布带有附件图像的邮件,因此我使用了以下代码:

function yamPost(mytoken) {
        var msg_Body = jQuery("#myBody").val();
        var imgData = new FormData();

        var files = $("#attachement").get(0).files;

        if (files.length > 0) {
            imgData.append("attachement1", files[0]);
        }

        yam.platform.request(
        {
            url: "messages.json",
            method: "POST",
            network: "myNetwork",
            header:{
                authorization: "Bearer " + mytoken,
            },
            data: {
                body: msg_Body,
                attachment1: imgData
            },
            contentType: "multipart/form-data",

            success: function (feedResult) {
                console.log("- Yeaaahhh");
                console.log(feedResult);
                debugger;
            },
            error: function (msg) {
                console.log("- Can't post message with attachement");
                debugger;
            }
        });
    }

我收到了错误:

  

“未捕获的TypeError:非法调用”

我也尝试使用pending_attachment,但我遇到了同样的问题或http500内部服务器错误... 任何人都可以发一个他如何做的示例代码。

修改

我尝试了一种发送数据的新方法:

而不是发送FormData我使用了这个:

function readBinary() {
        var reader = new FileReader();

        reader.onloadend = function () {
            yamPost(reader.result, token);
        }

        reader.readAsBinaryString(document.getElementById("attachement").files[0]);
    }

每次我这样做都会遇到这个例外:

  

“没有'Access-Control-Allow-Origin'”

但是,如果我不包含附件( attachment1:imgData或binaryFileOutput ),则会发布消息!

1 个答案:

答案 0 :(得分:2)

我终于找到了答案, 事实上,使用FormData对象是正确的做法,但是我在worng方式上使用它,你必须在同一个FormData对象上附加所有要发送的属性,就像这个thread一样,这里是神奇的代码:

function YamPostImage() {
var myData = new FormData();

myData.append('body', "my app images");
myData.append('attachment1', document.getElementById("attachement").files[0]);

yam.platform.request(
{
    url: "messages.json",
    method: "POST",
    network: "my-network",
    data: myData,
    cache: false,
    contentType: false,
    processData: false,
    success: function (feedResult) {
        console.log("- Yeaaahhh");
        debugger;
    },
    error: function (msg) {
        console.log("- Can't post message with attachement");
        debugger;
    }
});

}