2011-05-26 26 views
2

這就是我目前爲止的內容。我知道該文件的作品,因爲當我強制擴展名爲.jpg並上傳.jpg圖片時,它工作正常。但是文件名與附加的.jpg類似。在struts 2中上傳文件會產生擴展名爲.tmp的文件

E:\的Documents and Settings \ mgrif002 \桌面\ DATA \ upload_59fef24e_1302d1a3fb9__7ff5_00000001.tmp.jpg

try 
{ 
    String filePath = "E:/Documents and Settings/mgrif002/Desktop/data/"; 
    //System.out.println("Server path:" + filePath); 
    System.out.println(form.getFile().getAbsolutePath()); 
    File fileToCreate = new File(filePath,form.getFile().getAbsolutePath()+".jpg"); 

    FileUtils.copyFile(form.getFile(), fileToCreate); 

    Dicom dicom_file = new Dicom(pid,fileToCreate.getAbsolutePath(), form.getName(),true,((short)1)); 
    ccr.saveDicom(dicom_file); 
} 
catch (IOException e) 
{ 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

回答

0

只需更換.tmp通過.jpg而不是附加.jpg。有幾種方法,如substringing部分直到last期間,或regex將最後.tmp部分等

String fileName = form.getFile().getName().replaceAll("\\.tmp$", ".jpg"); 
File fileToCreate = new File(filePath, fileName); 
// ... 
+0

哇,這是可笑的簡單。謝謝! – 2011-05-26 17:51:52

2

這是我的命也。這就是我解決問題的方法。以爲這可能會省下一些珍貴的我們的生命:)

if (request instanceof MultiPartRequestWrapper) { 
       MultiPartRequestWrapper multiWrapper = 
        (MultiPartRequestWrapper) request; 
       if (multiWrapper != null) { 
        HttpServletRequest hrequest = (HttpServletRequest)request; 

        Enumeration fileParameterNames = multiWrapper.getFileParameterNames();    
        //String fileName = multiWrapper.getFileNames("upload")[0]; 
        if(fileParameterNames.hasMoreElements()){ 
         String inputValue = (String) fileParameterNames.nextElement(); 
         String[] localFileNames = multiWrapper.getFileNames(inputValue); 
         for (String fn : localFileNames) { 
          System.out.println("local filename = " + fn);     
         } 
         File[] files = multiWrapper.getFiles(inputValue); 
         HttpSession ses = hrequest.getSession(); 
         User user = (User) ses.getAttribute("user"); 
         IR loggedInIR = user.getIr(); 

         for (File cf : files) { 
          File destFile = new File(cf.getParentFile().getAbsolutePath()+"\\"+loggedInIR.getId()+"\\images\\"+localFileNames[0]); 
          FileUtils.copyFile(cf, destFile); 
          FileUtils.deleteQuietly(cf); 

         }    
        } 
       } 
      }