docx-bestandscorruptie met bytestream en Dropbox-API

We hebben een webapp waarmee gebruikers bestanden kunnen uploaden naar hun Dropbox-account. Deze webapp gebruikt de Dropbox-API om het uploadproces te vergemakkelijken. Na het uploaden, wanneer een gebruiker bestandstype .docx probeert te bekijken, verschijnt het bericht "Het bestand" somefile.docx "kan niet worden geopend omdat er problemen zijn met de inhoud".

Hier is een deel van de code die we gebruiken:

Eerst worden het bestand geconverteerd naar een byte [] en doorgegeven aan de aanroep naar de API-methode.

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 "";
        }
    }

Het antwoord van de api is {"Winnaar!"} We hebben ook geverifieerd dat de byte [] niet is beschadigd voordat deze naar Dropbox is verzonden.

Then when a user tries to open the file either by downloading it from the website or just viewing the file directly from the Dropbox folder, they get this error message. enter image description here

Dit gebeurt ook voor .xlsx (Excel 2007 - up) bestanden. Bestanden van het type .docx en .xlsx worden beschadigd als ze door de Dropbox-API worden geüpload naar de Dropbox-map? Alle hulp wordt enorm op prijs gesteld.

6
Is dit ook het geval met "eenvoudige" bestanden - zoals * .txt?
toegevoegd de auteur BennoDual, de bron
Wat gebeurt er wanneer je het originele bestand vergelijkt met het bestand in dropbox? Waar zijn de veranderingen? Het einde? Het begin?
toegevoegd de auteur Pablo Montilla, de bron
Pablo, ik heb Winmerge gebruikt om het originele bestand en het bestand in dropbox te vergelijken. Er lijkt een verschil te zijn wanneer ik ze vergelijk in de vorm van .docx of .xml, maar het verschil lijkt gewoon stijl te zijn. Ook wilde ik vermelden dat ik RestSharp's RestClient-object gebruik om http-verzoeken te verzenden. Ik ga ervan uit dat dat prima werkt omdat het veel wordt gebruikt in .net, net zoals asihttprequest veel wordt gebruikt op iOS.
toegevoegd de auteur Dun, de bron
Pablo, We hebben gekeken naar het bestandsverschil tussen het originele bestand en het bestand in dropbox. Het bestand in dropbox heeft een crlf aan het einde van de regel op de laatste regel, waar het oorspronkelijke bestand niets heeft aan het einde van de laatste regel.
toegevoegd de auteur Dun, de bron
Heeft iemand een werkend voorbeeld of zelfstudie over het gebruik van de C# SDK's van derde partijen die hier worden voorgesteld dropbox.com/developers/reference/sdk ? Ik kan Microsoft Office 2007 - 2010-bestanden die zijn geüpload naar Dropbox nog steeds niet correct bekijken met behulp van de dropbox-rustapp.
toegevoegd de auteur Dun, de bron
Pablo, We hebben onze code bijgewerkt om deze open source-bibliotheek "DropNet" te gebruiken. Deze bibliotheek gebruikt een bijgewerkte RestSharp-dll. Dit lijkt de extra carriage return te hebben verwijderd. Wanneer ik een verschil maak in het originele bestand en het geüploade bestand, zijn deze identiek volgens WinMerge. Bij het bekijken van het bestand dat is geüpload, verschijnt een dialoogvenster (boven screenshot). Als ik op OK klik, verschijnt er een nieuw dialoogvenster. Wanneer ik op Ja klik, krijg ik het bestand correct weergegeven! Het wordt echter geopend als Document1 [Compatibiliteitsmodus]. Heeft iemand geprobeerd om met de Dropnet-bibliotheek samen te werken? Alle hulp wordt enorm op prijs gesteld.
toegevoegd de auteur Dun, de bron

1 antwoord

.docx-bestanden en andere Office 2007-bestandstypen hebben dit probleem online. Hebt u de MIME-typen van uw server gecontroleerd (bewerken - als uw server daar tussenin wordt gebruikt)?

0
toegevoegd