2013-02-25 83 views
0

我有以下代碼來上傳文件,當我使用file.getNeme時,它顯示了具有tmp擴展名的臨時文件名,我怎麼才能找到實際上傳文件的擴展名? ,我上傳的文件被稱爲test.jpg如何在java中找到上傳文件的擴展名?

import java.io.File; 
import org.apache.commons.io.FileUtils; 

public class FileUploder { 

    private File file; 

    public File getFile() { 
     return file; 
    } 

    public void setFile(File file) { 
     this.file = file; 
    } 
    ...... 

    System.out.println("file:" +file.getName()); 
    try { 
     File fileToCreate = new File(filePath,name); 
     FileUtils.copyFile(file, fileToCreate); 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } 

    ...... 

電流輸出類似於>>>file:upload__1a6d32_13d0eda6d49__7fdf_00000012.tmp

+0

http://struts.apache.org/release/2.0.x/docs/file-upload.html#FileUpload-BasicUsage – 2013-02-25 02:26:41

+0

@guido,我下面這個教程,但它不是關於擴展,在問題中顯示我沒有使用文件名和內容類型變量,因爲他們不工作的原因,但上述代碼的作品。 – 2013-02-25 02:28:33

+0

[Struts2中的同一頁上的已上傳文件詳細信息]的可能重複(http://stackoverflow.com/questions/14890193/uploaded-file-details-on-same-page-in-struts2) – 2013-02-25 10:46:50

回答

0
private String getImageFileExtendtion (FileItem item) { 
     String formatName = "png"; 
     String fileName = item.getName(); 
     if (fileName != null && fileName.length() >0) { 
      int index = -1; 
      for (int i = fileName.length()-1 ; i >=0; i --) { 
       if (fileName.charAt(i)=='.') { 
        index = i; 
        break; 
       } 
      } 
      if (index >=0 && index < fileName.length() -1) { 
       formatName = fileName.substring(index+1); 
      } 
     } 
     return formatName ; 
    }