2011-10-27 23 views
6

私たちはユーザーがDropboxアカウントにファイルをアップロードできるWebアプリケーションを持っています。このWebアプリケーションは、Dropbox APIを使用してアップロード処理を容易にします。アップロード後、ユーザーがファイルタイプ.docxを表示しようとすると、「コンテンツに問題があるため、somefile.docxファイルを開くことができません」というメッセージが表示されます。ここでバイトストリームとDropbox APIを使用したdocxファイルの破損

は、我々が使用しているコードの一部です:

まず、[]バイトにファイルを変換し、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 ""; 
     } 
    } 

APIからの応答が {「受賞!」}である 我々はまた、それがDropboxに送信される前にバイト[]は壊れていないことを確認しました。

ユーザーがWebサイトからダウンロードするか、Dropboxフォルダからファイルを直接表示するだけでファイルを開くと、このエラーメッセージが表示されます。 enter image description here

これは、.xlsx(Excel 2007 - up)ファイルでも発生しています。 Dropbox APIによってDropboxフォルダにアップロードされると、.docxおよび.xlsxタイプのファイルが壊れていますか?どんな助けでも大歓迎です。

+1

「* .txt」のような「シンプルな」ファイルの場合もそうですか? – BennoDual

+1

元のファイルとDropboxのファイルを比較するとどうなりますか?変更はどこにありますか?終わり?最初は? –

+0

Pablo、私は元のファイルとDropboxのファイルを比較するためにWinmergeを使いました。 .docx形式または.xml形式で比較すると違いがあるようですが、違いはちょうどスタイルに見えます。また、RestSharpのRestClientオブジェクトを使用してHTTPリクエストを送信していることにも言及したいと思います。 asihttprequestがiOS上で広く使われているように.netで広く使われているので、うまく動作すると思います。 – Dun

答えて

0

.docxファイルおよびその他のoffice 2007ファイルタイプには、この問題がオンラインであります。サーバーのMIMEタイプを確認しましたか(編集 - サーバーを中間で使用している場合)

関連する問題