Повреждение файла docx при использовании потока байтов и API Dropbox - PullRequest
6 голосов
/ 28 октября 2011

У нас есть веб-приложение, которое позволяет пользователям загружать файлы в свою учетную запись Dropbox. Это веб-приложение использует Dropbox API для упрощения процесса загрузки. После загрузки, когда пользователь пытается просмотреть тип файла .docx, он выдает сообщение: «Файл« somefile.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.

Затем, когда пользователь пытается открыть файл, загружая его с веб-сайта или просто просматривая файл непосредственно из папки Dropbox, он получает это сообщение об ошибке. enter image description here

Это также касается файлов .xlsx (Excel 2007 - up). Файлы типа .docx и .xlsx повреждаются при загрузке в папку Dropbox API Dropbox? Любая помощь с благодарностью.

1 Ответ

0 голосов
/ 18 января 2012

.docx файлы и другие типы файлов Office 2007 имеют эту проблему в Интернете. Вы проверили типы MIME вашего сервера (измените - если он использует ваш сервер в качестве промежуточного)?

...