2011-10-27 18 views
6

Tenemos una aplicación web que permite a los usuarios subir archivos a su cuenta de Dropbox. Esta aplicación web usa la API de Dropbox para facilitar el proceso de carga. Después de la carga, cuando un usuario intenta ver el tipo de archivo .docx le da un mensaje, "El archivo" somefile.docx "no se puede abrir porque hay problemas con el contenido".corrupción de archivos docx mediante el flujo de bytes y la API de Dropbox

Aquí es una parte del código que estamos utilizando:

En primer lugar, están convirtiendo el archivo a un byte [] y que pasa en la llamada al método 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 ""; 
     } 
    } 

La respuesta de la API es { "Ganador!"} También hemos comprobado que el byte [] no está dañado antes de ser enviada a Dropbox.

Luego, cuando un usuario intenta abrir el archivo descargándolo del sitio web o simplemente viendo el archivo directamente desde la carpeta de Dropbox, recibe este mensaje de error. enter image description here

Esto también ocurre con los archivos .xlsx (Excel 2007 - up). Los archivos de tipo .docx y .xlsx se corrompen cuando la API de Dropbox los cargan en la carpeta de Dropbox. Cualquier ayuda muy apreciada.

+1

¿Es este también el caso de los archivos "simples", como * .txt? – BennoDual

+1

¿Qué sucede cuando compara el archivo original con el archivo en Dropbox? ¿Dónde están los cambios? ¿El fin? ¿El principio? –

+0

Pablo, utilicé Winmerge para comparar el archivo original y el archivo en Dropbox. Parece que hay una diferencia cuando los comparo en formato .docx o formulario .xml pero la diferencia parece ser solo estilo. También quería mencionar que estoy utilizando el objeto RestClient de RestSharp para enviar solicitudes http. Supongo que funciona bien porque es ampliamente utilizado en .net al igual que asihttprequest es ampliamente utilizado en iOS. – Dun

Respuesta

0

. Los archivos .docx y otros tipos de archivos de Office 2007 tienen este problema en línea. ¿Ha comprobado los tipos MIME de su servidor (edite, si usa su servidor como intermediario)?

Cuestiones relacionadas