2015-03-02 132 views
0

我使用gwtupload.client.MultiUploader上傳GWT服務器上的zip文件。然後在服務器上,我將zip文件轉換爲要插入數據庫的字節數組。結果數據庫中50%的文件被破壞。這裏有一點我的代碼。GWT服務器上傳文件損壞

@UiField(provided = true) 
MultiUploader muplDef; 

public MyClass(){ 
     muplDef = new MultiUploader(); 
     muplDef.setValidExtensions("zip"); 
     muplDef.addOnFinishUploadHandler(onFinishUploaderHandler); 
     muplDef.addOnCancelUploadHandler(onCancelUploaderHander); 
} 

private final IUploader.OnFinishUploaderHandler onFinishUploaderHandler = new IUploader.OnFinishUploaderHandler() { 
     @SuppressWarnings("incomplete-switch") 
     @Override 
     public void onFinish(IUploader uploader) { 
      switch (uploader.getStatus()) { 

      case SUCCESS: 
       attachZip = true; 
      } 
     } 
    }; 
    private final IUploader.OnCancelUploaderHandler onCancelUploaderHander = new IUploader.OnCancelUploaderHandler() { 
     @Override 
     public void onCancel(IUploader uploader) { 
      attachZip = false; 
     } 
    }; 

字節數組

String fileName = "D:\1.zip"; 
       File f = new File(fileName); 
       byte[] edocBinary = new byte[(int) f.length()]; 
       RandomAccessFile ff; 
       try { 
        ff = new RandomAccessFile(f, "r"); 
        ff.readFully(edocBinary); 
       } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 

我的問題是:文件可以correpted即使我有OnFinishUploaderHandler和案例:成功?還有其他的情況像錯誤,也許這種情況下會檢查文件?或者問題是轉換爲字節數組?你能提供一些建議嗎,謝謝。

回答

0

正如你所說,你有兩個步驟:

1-上傳的zip文件

2-插入zip文件在數據庫

如果第1步做得正確,你」能否成功顯示文件正確地從客戶端傳輸到服務器,之後你做了什麼不是由GwtUpload管理。

所以我猜想當您嘗試將文件插入數據庫時​​發生了腐敗。如果你正在使用MySQL試試這個http://www.codejava.net/java-se/jdbc/insert-file-data-into-mysql-database-using-jdbc

+0

在你的鏈接中,我發現下面的「BLOB:65,535字節(64 KB)」。我的表格包含BLOB列,但我的zip文件的最大大小爲10MB。也許我應該使用MEDIUMBLOB類型? – olgacosta 2015-03-03 06:31:39

+0

是的MEDIUMBLOB會很好 – outellou 2015-03-03 11:24:51

+0

我發現100%是第一步的問題。 GwtUpload傳輸錯誤的文件。也許服務器很慢。你能否給我提供一些建議:gwt檢查傳輸數據的散列,或者你可以給我一些信息,我可以在GWT中瞭解更多關於上傳數據的信息? – olgacosta 2015-03-18 12:31:50