Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Twitter-使用upload.json上载图像时出现媒体错误_Javascript_Twitter - Fatal编程技术网

Javascript Twitter-使用upload.json上载图像时出现媒体错误

Javascript Twitter-使用upload.json上载图像时出现媒体错误,javascript,twitter,Javascript,Twitter,我得到了下一个错误: getMediaBinary: function() { var file = document.getElementById('photo').files[0], reader = new FileReader(), deferred = $.Deferred(); reader.onloadend = function () { return deferred.resolve(reader.result

我得到了下一个错误:

 getMediaBinary: function() {
    var file = document.getElementById('photo').files[0],
        reader = new FileReader(),
        deferred = $.Deferred();

    reader.onloadend = function () {
        return deferred.resolve(reader.result);
    };

    reader.readAsBinaryString(file);

    return deferred.promise();
},
getMediaData: function() {
    var file = document.getElementById('photo').files[0],
        reader = new FileReader(),
        deferred = $.Deferred();

    reader.onloadend = function () {

        return deferred.resolve(reader.result);
    };

    reader.readAsDataURL(file);

    return deferred.promise();
},
uploadMedia: function() {
  var formData = new FormData();

    $.when(JTWEET.getMediaBinary(), JTWEET.getMediaData() ).then(function(media, media_data) {
        formData.append('media', media);
        formData.append('media_data', media_data);
        return $.ajax({
            url: JTWEET.routerUrl + 'https://upload.twitter.com/1.1/media/upload.json',
            type: 'POST',
            //   data: { media: document.getElementById('photo').files[0].name, media_data: JTWEET.getMediaData() },
            data: formData,
            contentType: false,
            processData: false,
            success: function() {
                console.dir(arguments);
            },
            error: function() {
                console.dir(arguments);
            }
        });
    });

},

我遗漏了什么?

试试看这个-

我终于明白了。这里有两件事很重要: 1.参数名称必须是“媒体”,而不是“媒体[]” 2.不要设置contentType属性。它会阻止自动创建具有正确边界值的内容类型标题

正确的选项对象如下所示:

{"errors":[{"code":38,"message":"media parameter is missing."}]}

你是如何创建imageblob的?我没有,这是别人的作品。他列出了完整的代码-您可能对twitter.gs第198行最感兴趣,
OAuth.prototype.uploadMedia=function(imageblob)
等。
var options = {
    "oAuthServiceName":"twitter",
    "oAuthUseToken":"always",
    method: "POST",
    payload: { "media" : imageblob }
};