2011-10-27 26 views
6

Mamy aplikację internetową, która umożliwia użytkownikom przesyłanie plików na ich konta Dropbox. Ta aplikacja internetowa korzysta z interfejsu API Dropbox, aby ułatwić proces przesyłania. Po przesłaniu, gdy użytkownik spróbuje wyświetlić typ pliku .docx, wyświetla komunikat "Plik" somefile.docx "nie można otworzyć, ponieważ występują problemy z zawartością".uszkodzenie pliku docx za pomocą strumienia bajtów i interfejsu API Dropbox

Oto kodu używamy:

pierwsze, są konwersji pliku w bajcie [] i przekazywanie go do połączenia metodą API.

public static string DropboxUpload(byte[] DBbyte, string filename, string token, string tokensecret) 
    { 
     try 
     { 
      for (int i = 0; i < 4; i++) 
      { 
       var dropclient = new RestClient(FILEURL); 
       dropclient.ClearHandlers(); 
       dropclient.AddHandler("*", new JsonDeserializer()); 

       dropclient.BaseUrl = FILEURL; 
       dropclient.Authenticator = new OAuthAuthenticator(dropclient.BaseUrl, API_KEY, API_SECRET, token, tokensecret); 

       var request = new RestRequest(Method.POST); 
       request.Resource = VERSION + "/files/dropbox" + PATH; 
       request.AddParameter("file", filename); 

       request.AddFile(new FileParameter { Data = DBbyte, FileName = filename, ParameterName = "file" }); 

       var response = dropclient.Execute(request); 

       if (response.StatusCode == HttpStatusCode.OK) 
        break; 
       else 
        Thread.Sleep(1000); 
      } 

      string dropboxLink = GetPublicLinks(filename, token, tokensecret); 
      dropboxLink = dropboxLink.Replace("\"", ""); 
      return dropboxLink; 
     } 
     catch 
     { 
      return ""; 
     } 
    } 

Odpowiedź z API jest { „Zwycięstwo!”} Mamy również sprawdzić, czy bajt [] nie jest uszkodzona przed wysłaniem go do Dropbox.

Następnie, gdy użytkownik próbuje otworzyć plik albo pobierając go ze strony internetowej, albo po prostu przeglądając plik bezpośrednio z folderu Dropbox, otrzymuje ten komunikat o błędzie. enter image description here

To samo dzieje się w przypadku plików .xlsx (Excel 2007 - up). Pliki typu .docx i .xlsx są uszkodzone, gdy są przesyłane do folderu Dropbox przez interfejs API Dropbox? Każda pomoc bardzo doceniona. Pliki

+1

Czy dotyczy to również plików "prostych", takich jak * .txt? – BennoDual

+1

Co stanie się, gdy porównasz oryginalny plik z plikiem w dropboxie? Gdzie są zmiany? Koniec? Początek? –

+0

Pablo, użyłem Winmerge do porównania oryginalnego pliku i pliku w dropboxie. Wydaje się, że istnieje różnica, gdy porównuję je w formacie docx lub xml, ale różnica wydaje się być po prostu stylem. Chciałem również wspomnieć, że używam obiektu RestSharp's RestClient do wysyłania żądań http. Zakładam, że działa dobrze, ponieważ jest szeroko stosowany w .net, podobnie jak asihttprequest jest szeroko stosowany w systemie iOS. – Dun

Odpowiedz

0

.docx i inne typy plików pakietu Office 2007 mają ten problem w Internecie. Czy sprawdziłeś swoje typy MIME na serwerze (edytuj - czy używa twojego serwera jako pośrednika)?

Powiązane problemy