OneNote api下载图片

时间:2014-11-01 01:18:23

标签: javascript node.js api onenote

我试图检索onenote页面上的图像列表。 当我获得页面内容,HTML时,图像具有以下形式的来源:

https://www.onenote.com/api/beta/resources/ {ID} / $值

搞过那个网址,我得到以下标题:

{
  'cache-control': 'no-cache',
  pragma: 'no-cache',
  'content-type': 'application/octet-stream',
  expires: '-1',
  server: 'Microsoft-IIS/8.0',
  'x-correlationid': '38283de4-110c-4c17-a371-c950c88025de',
  'x-usersessionid': '38283de4-110c-4c17-a371-c950c88025de',
  'x-officefe': 'OneNoteServiceFrontEnd_IN_2',
  'x-officeversion': '16.0.3429.1562',
  'x-officecluster': 'eus-www.onenote.com',
  p3p: 'CP="CAO DSP COR ADMa DEV CONi TELi CUR PSA PSD TAI IVDi OUR SAMi BUS DEM NAV STA UNI COM INT PHY ONL FIN PUR"',
  'x-content-type-options': 'nosniff',
  'request-processing-time': '31.2529 ms',
  'content-disposition': 'attachment',
  'preference-applied': 'odata.include-annotations=*',
  'x-aspnet-version': '4.0.30319',
  'x-powered-by': 'ASP.NET',
  date: 'Sat, 01 Nov 2014 00:17:25 GMT',
  'content-length': '10672' 
}

并且该回复的主体是一个很大的二进制文件。

我正在使用Node Js应用程序执行此操作。

有人可以给我一个如何将响应保存到图像文件中的示例,例如png或jpeg吗? 提前致谢

1 个答案:

答案 0 :(得分:0)

经过一些额外的研究后,我想出了如何做到这一点。

代码:

downloadFile: function (url, fileName, callback)
	{
		var options = {
				url: url
			,	encoding: null
			,	headers:  {'Authorization': 'Bearer ' + this.context.accessToken}
			};

		request.get(options, function (e, httpResponse, body)
		{
			var buffer = new Buffer(body, 'binary');

			fs.writeFile(fileName, buffer, function(err)
			{
				if(err)
				{
					console.log(err);
					throw err;
				}
				else
				{
					callback()
				}
			});
		});
	}

这里的重要部分是:

  1. 编码:null,否则请求(npm模块)会将您的身体视为字符串。
  2. 您必须知道OneNote会将所有图片视为.emf,因此您可以将其转换或以该文件格式保存。