我正在尝试从Chrome扩展程序中将图像(使用元数据)发布到Picasa Webalbums.请注意,正如我在此处所述,Content-Type image/xyz的常规帖子有效.但是,我希望包含描述/关键字,协议规范描述了带有XML和数据部分的多部分/相关格式.
我通过HTML5 FileReader和用户文件输入获取数据.我使用检索二进制字符串
FileReader.readAsBinaryString(file);
Run Code Online (Sandbox Code Playgroud)
一旦FileReader加载了字符串,假设这是我的回调代码:
function upload_to_album(binaryString, filetype, albumid) {
var method = 'POST';
var url = 'http://picasaweb.google.com/data/feed/api/user/default/albumid/' + albumid;
var request = gen_multipart('Title', 'Description', binaryString, filetype);
var xhr = new XMLHttpRequest();
xhr.open(method, url, true);
xhr.setRequestHeader("GData-Version", '3.0');
xhr.setRequestHeader("Content-Type", 'multipart/related; boundary="END_OF_PART"');
xhr.setRequestHeader("MIME-version", "1.0");
// Add OAuth Token
xhr.setRequestHeader("Authorization", oauth.getAuthorizationHeader(url, method, ''));
xhr.onreadystatechange = function(data) {
if (xhr.readyState == 4) {
// .. handle response
}
};
xhr.send(request);
}
Run Code Online (Sandbox Code Playgroud)
gen_multipart函数只是从输入值和XML模板生成多部分,并生成与规范完全相同的输出(除了..binary图像数据..),但为了完整起见,这里是:
function gen_multipart(title, …Run Code Online (Sandbox Code Playgroud)