【问题标题】:Google Docs API: cannot set document titleGoogle Docs API:无法设置文档标题
【发布时间】:2012-03-21 03:02:09
【问题描述】:

我正在尝试使用 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);

这是我获得可恢复媒体链接后的第二个请求的样子

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();

似乎我错误地发送了原子数据。关于我可能做错了什么的任何想法?

【问题讨论】:

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


    【解决方案1】:

    我发现我做错了什么。

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

    我在下面的请求中有它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      相关资源
      最近更新 更多