2014-10-07 41 views
1

我上传文档,XLS文件,但我不明白如何上传HTML文件。此代码上传文件但不预览文件。它说 - “我们道歉预览不可用”。什么是我必须设置的MIME类型?谷歌Apis V2的HTML MIME /类型

if (extension == ".htm" || extension == ".html") 
        { 

         File body = new File(); 
         body.Title = Path.GetFileNameWithoutExtension(item); 
         //body.Description = "A test document"; 
         body.MimeType = "text/HTML"; 
         byte[] byteArray = System.IO.File.ReadAllBytes(item); 
         System.IO.MemoryStream stream = new System.IO.MemoryStream(byteArray); 

         FilesResource.InsertMediaUpload request = service.Files.Insert(body, stream, 
                         "application/vnd.google-apps.file"); 
         request.Convert = true; 

回答

0

我在使用Gmail API上传文件时遇到了一些问题。我不知道Files API的工作原理是否相同,但在调用Insert方法之前,可以尝试对byteArray进行编码。实现这些方法:

protected static string Base64ForUrlEncode(string str) 
     { 

      StringBuilder result = new StringBuilder(Convert.ToBase64String(Encoding.ASCII.GetBytes(str)).TrimEnd('=')); 
      result.Replace('+', '-'); 
      result.Replace('/', '_'); 
      return result.ToString(); 
     } 

protected static byte[] GetBytes(string str) 
{ 
    byte[] bytes = new byte[str.Length * sizeof(char)]; 
    System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length); 
    return bytes; 
} 

然后,插入方法之前调用它:

byte[] byteArray = System.IO.File.ReadAllBytes(item); 
string base64 = Base64ForUrlEncode(System.Text.Encoding.UTF8.GetString(byteArray)); 
System.IO.MemoryStream stream = new System.IO.MemoryStream(GetBytes(base64)); 
FilesResource.InsertMediaUpload request = service.Files.Insert(body, stream, "application/vnd.google-apps.file"); 

你也可以尝试设置MIME类型为 “text/HTML”,小写字母。

+0

什么是电子邮件?包含什么? – mehelta 2014-10-07 16:33:38

+0

对不起,我从我的实施中复制。你的情况不是'email'是'byteArray'。我会编辑我的答案。 – 2014-10-08 09:10:30

+0

和你在“myme/type”中设置了什么? – mehelta 2014-10-13 14:53:57