文件上传的服务器路径问题

ServletActionContext.getServletContext().getRealPath("/UploadImages")
获取的结果可能是windows:"d:\tomcat\webapps\projectname\UploadImages"  
linux:"/usr/local/tomcat5/webapps/projectname/UploadImages" 可以看到,我们只要获取ServletContext就可以获取文件在不同服务器上的物理路径了。而且操作都是在你部署项目的文件目录下。这样你在通过File对象来操作你的文件和文件夹就显得轻而易举了。剩下的就是结合你的业务需求,将你的物理绝对路径加上你想组合的相对路径完成你的代码了。

PART 1:

xxx.split("\\") 显然得不到想要的结果     
    
正确方法     
    
xxx.split("\\\\");     
    
原因如下:     
    
在Java中处理一些路径相关的问题的时候,如要取出ie浏览器上传文件的文件名,由于ie会把整个文件路径都作为文件名上传,需要用java.lang.String中的replaceAll或者split来处理。如:     
    
上传文件路径为:C:\Documents and Settings\collin\My Documents\111-lazyloading.gif,欲取出文件名:111-lazyloading.gif。可以     
    
String temp[] = name.split("\\\\");     
if (temp.length > 1) {     
name = temp[temp.length - 1];     
}     
    
regex为\\\\,因为在java中\\表示一个\,而regex中\\也表示\,所以当\\\\解析成regex的时候为\\。     
    
由于unix中file.separator为斜杠"/",下面这段代码可以处理windows和unix下的所有情况:     
    
String temp[] = name.replaceAll("\\\\","/").split("/");     
if (temp.length > 1) {     
    name = temp[temp.length - 1];     
}    


PART 2:

java文件上传下载路径  
文章分类:Java编程   
         在java中涉及到访问文件路径或是引用某个文件时,经常要用到获取当前项目上下文路径问题,有时上传图片或文件后需要下载文件,又涉及到文件的下载路径,于是将在java或jsp 里文件路径获取方法总结如下:   
  
     String basePath = request.getContextPath();  
     basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+basePath+"/";   
     String servletPath =  request.getServletPath();  
     String realPath=request.getRealPath("")+"\\";  
 
   
 
    //根据上传时间,生成不同的文件夹  
 
  String currFoder =  m1.createFolder(realPath,uploadDate);  
 
   
 
    //文件保存目录路径  
 
 String savePath = realPath+currFoder;    
 
    //文件下载路径  
  String fileName =   dto.getFileName("fileName");  
  String downLoadPath = basePath+currFoder+"/"+fileName;  
 
   
 
   //文件输出路径:  
 
savePath========>>D:\Tomcat5.5\webapps\testProject\upload/2010-07-15/2010-07-15第1次.doc  
downLoadPath===>>http://localhost:8081/testProject/upload/2010-07-15/2010-07-15第1次.doc  
 
   
 
   
 
/** 
     * 创建存放上传文件的文件夹,如果不存在则自动创建 
     * @param realPath 
     * @param uploadDate 
     * @return 
     */ 
    public String createFolder(String realPath,String uploadDate){  
     String currFoder = "upload/"+uploadDate;  
     String fileFoder = realPath+currFoder;  
      
    FileOperate op = new FileOperate();  
    op.newFolder(fileFoder);    //调用newFolder()方法创建文件夹  
 
     return currFoder;  
    } 

你可能感兴趣的:(文件上传)