【问题标题】:Using the Google Docs API使用 Google 文档 API
【发布时间】:2011-10-13 09:28:51
【问题描述】:
【问题讨论】:
标签:
c#
php
google-docs-api
【解决方案1】:
您必须使用以下代码在本地下载文件。
var request = new DocumentsRequest(settings);
request.BaseUri = "https://docs.google.com/feeds/default/private/full/folder" + folderResourceId + "/contents";
Feed<Document> feed = request.GetEverything();
foreach (Document entry in feed.Entries)
{
if (entry.Title == fileName)
{
var fI = new FileInfo(uploadpath + entry.Title);
Stream stream = request.Download(entry, "");
arr = Read(stream);
stream.Close();
break;
}
}
private Byte[] Read(Stream stream)
{
//long originalPosition = stream.Position;
//stream.Position = 0;
try
{
Byte[] readBuffer = new Byte[4096];
int totalBytesRead = 0;
int bytesRead;
while ((bytesRead = stream.Read(readBuffer, totalBytesRead, readBuffer.Length - totalBytesRead)) > 0)
{
totalBytesRead += bytesRead;
if (totalBytesRead == readBuffer.Length)
{
int nextByte = stream.ReadByte();
if (nextByte != -1)
{
Byte[] temp = new Byte[readBuffer.Length * 2];
Buffer.BlockCopy(readBuffer, 0, temp, 0, readBuffer.Length);
Buffer.SetByte(temp, totalBytesRead, (Byte)nextByte);
readBuffer = temp;
totalBytesRead++;
}
}
}
Byte[] buffer = readBuffer;
if (readBuffer.Length != totalBytesRead)
{
buffer = new Byte[totalBytesRead];
Buffer.BlockCopy(readBuffer, 0, buffer, 0, totalBytesRead);
}
return buffer;
}
finally
{
//stream.Position = originalPosition;
}
}
下载文件后保存到本地系统并使用asp.net显示