私たちはユーザーが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フォルダからファイルを直接表示するだけでファイルを開くと、このエラーメッセージが表示されます。
これは、.xlsx(Excel 2007 - up)ファイルでも発生しています。 Dropbox APIによってDropboxフォルダにアップロードされると、.docxおよび.xlsxタイプのファイルが壊れていますか?どんな助けでも大歓迎です。
「* .txt」のような「シンプルな」ファイルの場合もそうですか? – BennoDual
元のファイルとDropboxのファイルを比較するとどうなりますか?変更はどこにありますか?終わり?最初は? –
Pablo、私は元のファイルとDropboxのファイルを比較するためにWinmergeを使いました。 .docx形式または.xml形式で比較すると違いがあるようですが、違いはちょうどスタイルに見えます。また、RestSharpのRestClientオブジェクトを使用してHTTPリクエストを送信していることにも言及したいと思います。 asihttprequestがiOS上で広く使われているように.netで広く使われているので、うまく動作すると思います。 – Dun