2014-10-07 71 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