Javascript 什么是';二进制';在chrome.wallpaperapi中?

Javascript 什么是';二进制';在chrome.wallpaperapi中?,javascript,google-chrome,google-chrome-app,Javascript,Google Chrome,Google Chrome App,我想使用api将用户上传的图像设置为壁纸 我使用JavaScript成功地将上传的文件转换为ArrayBuffer,但在“data”键中使用该文件会导致类似于以下内容的错误消息: "Invalid value for argument 1. Property 'data': Expected 'binary' but got 'object'." 我使用new blob()将ArrayBuffer转换为blob,但得到了相同的错误。将其转换为字符串会导致相同的错误,但将“object”替换为“

我想使用api将用户上传的图像设置为壁纸

我使用JavaScript成功地将上传的文件转换为ArrayBuffer,但在“data”键中使用该文件会导致类似于以下内容的错误消息:

"Invalid value for argument 1. Property 'data': Expected 'binary' but got 'object'."
我使用new blob()将ArrayBuffer转换为blob,但得到了相同的错误。将其转换为字符串会导致相同的错误,但将“object”替换为“string”

到目前为止,在谷歌上搜索没有任何结果。在这种情况下,二进制格式是什么?我将如何发送它

清单肯定有墙纸属性,我也可以通过URL设置墙纸。二进制是我唯一面临的问题

以下是我目前的代码:

app.js:

reader.addEventListener('load', function() {
  chrome.runtime.sendMessage({
    'action': 'new_wallpaper',
    'wallpaper_data': reader.result // I've also tried new Blob([reader.result])
  }, function(response) {
    console.log(response);
  });
}, false);
reader.readAsArrayBuffer(file);
background.js:

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
  if(request.action == 'new_wallpaper') {
    chrome.wallpaper.setWallpaper({
      'data': request.wallpaper_data,
      'layout': 'CENTER_CROPPED',
      'filename': 'Wallpaper Manager',
      'thumbnail': true
    }, function(thumbnail) {
       sendResponse(thumbnail);
    });
  }
  return true;
});

显示您使用的代码您可以包括
manifest.json
和完整的
javascript
吗?请参阅@PatrickEvans Updated。您应该在onMessage侦听器中记录result.wallpaper\u数据。通过“应该是一个JSON ifiable对象”传递的对象,因此您的数据可能会转换为您不期望的内容。我认为此分支可以帮助您