2011-10-27 35 views
6

Chúng tôi có một ứng dụng web cho phép người dùng tải tệp lên tài khoản Dropbox của họ. Ứng dụng web này sử dụng API Dropbox để tạo thuận lợi cho quá trình tải lên. Sau khi tải lên, khi người dùng cố gắng xem loại tệp .docx, nó cung cấp một thông báo "Không thể mở tệp" somefile.docx "vì có vấn đề với nội dung".tham nhũng tệp docx sử dụng luồng byte và API Dropbox

Dưới đây là một số mã chúng tôi đang sử dụng:

Đầu tiên, chúng tôi đang chuyển đổi các tập tin vào một byte [] và đi qua nó vào lời gọi phương thức 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 ""; 
     } 
    } 

Các phản ứng từ các api là { "Winner!"} Chúng tôi cũng đã xác nhận rằng byte [] không bị hỏng trước khi nó được gửi đến Dropbox.

Sau đó, khi người dùng cố mở tệp bằng cách tải xuống từ trang web hoặc chỉ xem tệp trực tiếp từ thư mục Dropbox, họ nhận được thông báo lỗi này. enter image description here

Điều này cũng xảy ra đối với các tệp .xlsx (Excel 2007 - up). Các loại tệp .docx và .xlsx đang bị hỏng khi chúng được tải lên thư mục Dropbox bằng API Dropbox? Bất kỳ trợ giúp đánh giá rất nhiều.

+1

Đây có phải là trường hợp với các tệp "đơn giản" - như * .txt không? – BennoDual

+1

Điều gì xảy ra khi bạn so sánh tệp gốc với tệp trong tài khoản đăng? Các thay đổi ở đâu? Kết thúc? Sự bắt đầu? –

+0

Pablo, tôi đã sử dụng Winmerge để so sánh tệp gốc và tệp trong tài khoản đăng. Dường như có sự khác biệt khi tôi so sánh chúng ở dạng .docx hoặc dạng .xml nhưng sự khác biệt dường như chỉ là kiểu. Ngoài ra tôi muốn đề cập đến rằng tôi đang sử dụng RestSharp của RestClient đối tượng để gửi yêu cầu http. Tôi giả định rằng các công trình tốt bởi vì nó được sử dụng rộng rãi trong. Net giống như asihttprequest được sử dụng rộng rãi trên iOS. – Dun

Trả lời

0

tệp .docx và các loại tệp Office 2007 khác có vấn đề này trực tuyến. Bạn đã kiểm tra các loại máy chủ MIME của bạn (chỉnh sửa - nếu nó sử dụng máy chủ của bạn như là một ở giữa)?

Các vấn đề liên quan