Xml 上传后无法在Google云存储中打开文件

Xml 上传后无法在Google云存储中打开文件,xml,google-cloud-storage,Xml,Google Cloud Storage,我在使用RESTAPI将pdf文件上载到我的Google云存储桶时遇到了一些问题(此处解释:)。响应给我一个http状态200,但当我试图打开或从我的bucket下载pdf文件时,它给我一个无效或损坏的pdf文件。请参见下面我正在使用的代码: var hostname = 'https://www.googleapis.com'; var file = 'pathToFile'; var file = WScript.CreateObject('ADODB.Stream'); file.T

我在使用RESTAPI将pdf文件上载到我的Google云存储桶时遇到了一些问题(此处解释:)。响应给我一个http状态200,但当我试图打开或从我的bucket下载pdf文件时,它给我一个无效或损坏的pdf文件。请参见下面我正在使用的代码:

var hostname = 'https://www.googleapis.com';
var file = 'pathToFile';

var file = WScript.CreateObject('ADODB.Stream');
  file.Type = 1;  
  file.Open();
  file.LoadFromFile(file);
  file.Position = 0;  

var http = WScript.CreateObject('Msxml2.ServerXMLHTTP.6.0');

http.open('POST', hostname + '/upload/storage/v1/b/[myBucket]/o', false);

var boundary = 'foo_bar_baz';

http.setRequestHeader('Content-Type', 'multipart/related; boundary=' + boundary);
http.setRequestHeader('Authorization', [myToken]);

var xml = WScript.CreateObject("MSXML2.DOMDocument");
var converter = xml.appendChild( xml.createElement("converter") );
    converter.dataType = "bin.base64";
    converter.nodeTypedValue = file.Read(file.Size);

boundary = '--' + boundary;

var body = boundary + '\r\nContent-Type: application/json; charset=UTF-8\r\n\r\n' + '{"name":"my.pdf", "mimeType": "application/pdf"}' + '\r\n'
    body += '\r\n' + boundary + '\r\nContent-Type: application/pdf\r\n\r\n' + converter.text + '\r\n';
    body += '\r\n' + boundary + '--'

http.send( body );
----更新---

见下文正文:

--foo_bar_baz
Content-Type: application/json; charset=UTF-8

{"name":"myPDF.pdf", "mimeType": "application/pdf"}

--foo_bar_baz
Content-Type: application/pdf

[base64 binary string]

--foo_bar_baz--

谢谢

很难一见钟情。我希望您在更新中添加一些信息:1。在http.send(body)之前打印“body”变量;2.你能用-v测试一下吗?谢谢@RubénC。我用印刷体更新了我的帖子。恐怕我不能使用curl命令,因为我所处的环境不可能下载命令行工具。基于此,API调用头似乎不包括uploadType,比如XML请求。无论如何,我不熟悉您执行请求的方式(可能是VBScript?),因此无法重现该问题。我使用了“curl”和“clientlibraries”来上传对象,如前一页所述,它们都工作得很好。