2013-06-26 64 views
0

我有一個愚蠢的問題,我在這裏實現與vaadin上傳按鈕,我希望用戶只上傳壓縮文件(.zip,.rar ..),imake一搜索,但我沒有找到有用的東西: 所以我試圖做到這一點,我知道這不是好辦法,因爲用戶已經上傳選擇的文件:控制上傳的文件類型(僅限特定的擴展名可以上傳)

@Override 
public OutputStream receiveUpload(String filename, String mimeType) { 
    // Create upload stream 
     FileOutputStream fos = null; // Stream to write to 
     String fileName ; 
     String userHome = System.getProperty("user.home"); 
     try { 
      // Open the file for writing. 
      file = new File(userHome+"/kopiMap/runtime/uploads/report/" + filename); 
      fileName= file.getName(); 
       //Here i will get file extension 
      fos = new FileOutputStream(file); 
     } catch (final java.io.FileNotFoundException e) { 
      Notification.show(
        "Could not open file<br/>", e.getMessage(), 
        Notification.TYPE_ERROR_MESSAGE); 
      return null; 
     } 
     return fos; // Return the output stream to write to 
    } 

那麼該怎麼辦呢上傳

+1

你在哪裏得到從文件名字符串?在這一點上檢查文件擴展名可能是一個更好的主意,而不是這種方法。 – MaxAlexander

+0

當用戶單擊提交按鈕時,會調用receiveUpload()方法。該方法必須返回一個OutputStream。 – AmiraGL

回答

2

你可以檢查mimeType,如果它是應用程序/郵編

@Override 
public OutputStream receiveUpload(String filename, String mimeType) { 
    // Create upload stream 
if(mimeType.equals("application/zip")) 
//Here you can restrict 
1

您可以添加此,它會工作(全部由HTML 5和大多數瀏覽器支持做現正接受屬性) - 這是例如用於.csv檔案來:

upload.setButtonCaption("Import"); 
JavaScript.getCurrent().execute("document.getElementsByClassName('gwt-FileUpload')[0].setAttribute('accept', '.csv')"); 
相關問題