Google Docs API:无法设置文档标题

时间:2012-03-21 03:02:09

标签: rest node.js google-docs google-docs-api

我正在尝试使用Node和Google Docs REST API上传文件。如果我不包含元数据,我可以上传文件,但它将始终上传为“无标题”。

但是当我包含元数据时,我发送原子数据并尝试继续文件上传后会收到以下错误:

ParseException - prolog中不允许使用内容

这是我第一次创建上传会话并获得可恢复媒体链接的请求

var meta = '<?xml version="1.0" encoding="UTF-8"?>'
    meta+= '<entry xmlns="http://www.w3.org/2005/Atom" xmlns:docs="http://schemas.google.com/docs/2007">'
    meta+= '<category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/docs/2007#document"/>'
    meta+= '<title>Test</title></entry>'

var options = {
    host: 'docs.google.com',
    path: '/feeds/upload/create-session/default/private/full',
    method: 'POST',
    headers: { 
      'Host' : 'docs.google.com',
      'Content-Length' : meta.length,
      'Content-Type': 'application/atom+xml',
      'GData-Version' : 3,
      'Authorization' : 'GoogleLogin auth=' + authToken,
      'X-Upload-Content-Type' : 'application/msword',
      'X-Upload-Content-Length' : 31232
    }
}

var req = https.request(options, function (res) {
    // make 2nd request

});

req.end(meta);

这是我获得resumable-media-link

后的第二个请求
var options = { 
    host: 'docs.google.com',
    path: resumableMediaLink,
    method: 'PUT',
    headers: {
        'Content-Length': data.length,
        'Content-Type': 'application/msword',
        'Content-Range': 'bytes 0-' + (data.length-1) +'/'+ data.length
    }   
}   

var req = https.request(options, function (res) {
    res.on('data', function (chunk) {
         // ...
    }); 
}); 

req.write(data);
req.end();

好像我正在错误地发送原子数据。关于我可能做错的任何想法?

1 个答案:

答案 0 :(得分:0)

我弄清楚我做错了什么。

我需要在第一个POST请求中设置'Slug'标头以启动可恢复的会话。

我在以下请求中有它。