最近在做一个服装网站的项目,用的是Eclipse,Svn,其中有一个增加功能,要上传图片都服务器上,
于是用到一个工具包代码如下:


public static String uploadFile(File inputFile, String fileName) {
                    //产生一个日期加五位随机数的文件名
SimpleDateFormat gs = new SimpleDateFormat("yyyyMMddHHmmss");
String time = gs.format(new Date());
String imageFileName = time + getRandom() + getExtention(fileName);
                    //获取项目名
String sp = ServletActionContext.getRequest().getContextPath();
String spath = sp.substring(1, sp.length());
                  // 获取目标地址
String[] str = ServletActionContext.getServletContext().getRealPath("/").split(".metadata");
File imageFile = new File(str[0] + spath + "\\Webroot\\UploadImages\\"+ imageFileName);

String imageSrc = imageFile.getPath();
ServletActionContext.getRequest().setAttribute("fileName",imageFile.getPath());
                  //上传文件,
copy(inputFile, imageFile);
return imageSrc;
}就是在目标服务器重新生成一个日期+5位随机数的文件,但数据库中地址那个字段显示的是:E:\Workspace\ctcs11\Webroot\UploadImages\2009081915322682855.jpg,我的项目Workspace在E盘,我想当用户通过浏览器访问的是他本地的E:\Workspace\ctcs11\Webroot\UploadImages\2009081915322682855.jpg,肯定是找不到的,有什么可以改正的。
  还有我们组的workspace都不统一,所以数据库中的地址也是乱七八糟的有D盘的,有E盘的。

解决方案 »

  1.   

    楼主,首先你的附件传到服务器上而不是数据库中,对吧?也就是用文件流的方式拷贝到了服务器的磁盘目录下。那么你应该通过配置文件配置一个文件上传目录的,我们目前就是这么做的,我不知道你是怎么配置路径的会传到工程下面去,可能是用的request获取到的什么路径吧!
      

  2.   

           就是上传到服务器的Webroot\UploadImages文件夹的,因为是用SVN check out出来做的,至于SVN具体是怎么与本地映射的我也 不懂,反正就是在Eclipse中 check out,然后编写 commit
      

  3.   

    LZ你要搞清楚,SVN是代码管理,你这图片上传是你程序实现的,和SVN有什么关系?你要在程序中用相对路径
      

  4.   


    sorry,刚做项目,对一些东西还不太了解,我想知道那目标地址应该怎么写
      

  5.   

    用相对路径../UploadImages/图片名  这样的格式   ../这个是上层目录的意思
      

  6.   

    取服务器地址 还不简单啊?P话不多说,见代码:// 设置服务器上传目录路径,filePath指的是上传至服务器的文件夹名称
    String fileDirectory = request.getSession().getServletContext().getRealPath("/")+ filePath;
      

  7.   

    那还是我这个方法 啊,
    ServletActionContext.getServletContext().getRealPath("/").输出都一样
      

  8.   

    有什么问题大家探讨一下 加群深圳J2EE①群 32763598 验证 SZJP
      

  9.   

    lz 把分给我吧  我给你 解释1.上传: 因为要保存到服务器的硬盘  你的java程序保存的时候就要用绝对路径 就是
    E:\Workspace\ctcs11\Webroot\UploadImages\2009081915322682855.jpg2.保存完成后  其他机器需要访问  所以图片的路径就不能是绝对路径了
    就应该写成
    192.168.*.*/Webroot\UploadImages\2009081915322682855.jpg 了  这样其他机器就可以访问了原理就是这样  如果方法不会写 就加我qq:315689376