文件上上传功能:
前提:”共享文件设置在另一台服务上“ 问题一:服务器端:指定路径下的文件已经存在但是用"File.exists()"这个方法判断返回的确是false问题二:
       本地进行文件上传,一切正常,共享文件夹能写,共享文件件内的文件可读,文件正常上传,
        但是在服务器上进行上传,共享的文件夹不能写,共享文件夹内的文件不可读,文件上传失败,

解决方案 »

  1.   

    90%权限问题linux还是win?楼上是MM。Java是坏东东
      

  2.   

    在win中的斜杠方向是"\"和linux下是相反的,linux必须是"/"才可以上传,用通配方法File.separator吧
      

  3.   

    问题一:文件存在但是返回false,这个我觉得可能性不太。人家写好的方法,一般不会错。还是看看你的路径或者你登录的用户是默认文件夹位置。win远程ftp不同用户登录之后对应不通的文件目录,可能是这个问题
    问题二:你可以确定你权限够了吗?不是public权限吧,我觉得你的权限还是不够。在服务器上把文件的权限给修改成anynoe试一试。我单词好像打错了你就试试吧。
    看看我的签名吧。嘿嘿
      

  4.   

    File dirFile = new File(fileServerDir);
    File fsFile = new File(fileServerDir, "dummy.txt");//文件服务器的路径 显示是正确的if (fsFile.exists()){// 这个地方返回的是false
    为什么是false呢?}
      

  5.   

    那你的fileServerDir是什么呀,应该是共享文件路径才对的
      

  6.   

    你是不是在WINDOWS的机子上开了个共享文件夹,然后就往文件夹里面写文件嘛?如果是的话那么dir需要共享文件目录,就是你部署服务的机子访问那个文件夹的url路径才行
      

  7.   

    个人感觉是因为取得服务器路径问题,在网上帮你找了下,下面是资料:
         资料出自:http://blog.sina.com.cn/s/blog_656977f401014p2x.html     URL serverUrl = new URL(http://ip:port/xxx/xxx/filename);
         HttpURLConnection urlcon = (HttpURLConnection) serverUrl.openConnection();
         String message = urlcon.getHeaderField(0);//文件存在‘HTTP/1.1 200 OK’ 文件不存在 ‘HTTP/1.1 404 Not Found’
         if (StringUtils.hasText(message) && message.startsWith("HTTP/1.1 404")) {
      不存在     }
      

  8.   


    是的 我就是在WINDOWS开了个共享文件夹,然后就往文件夹里面写文件
    我上面的路径就是共享文件的路径 是\\192.168.1.1\testfile 
    我跟断点都是看到路径是对的 但是一执行fsFile.exists() 也就是共享文件的路径 就说是false
    这是怎么回事呢?
      

  9.   

    谢谢你的资料
    我想问问 \\192.168.1.1\testfile   就是这样的路径不行吗
    testfile 是我的共享文件  
      

  10.   

    Java 是什么东东,。。 好可爱的名字  头像也淘气
      

  11.   


    public static void main(String[] args) {
    File file = new File("\\\\192.168.1.75\\asdf\\a.txt");
    System.out.println(file.exists());
    }我在我的电脑上创建了一个asdf的共享文件夹,打印结果为true
    看你的文件路径是否正确,如果你是读取的\\192.168.1.1\testfile请考虑转义符
      

  12.   


    \\\\192.168.1.75\\asdf\\a.txt  像你的这样的路径 我也是这么改的
    但是  System.out.println(file.exists());  还是false  
    能在帮忙看看是什么地方出问题了吗?
      

  13.   


    我的思路是 : A 电脑 B 电脑 C 电脑   A 是客户端 B 是服务器(程序运行) C 是文件保存
    现在 A 访问 B 服务器(程序画面) 选择一个文件上传(文件在A电脑里)到B ,在 B 上有个临时存储文件的地方(这个步骤OK), B 到 C  (需要找到C的路径)这个就是问题所在,程序中截取的路径(断点截取查看的路径)在 C 上可以找到,但是用 file.exists() 就是false  (C 电脑中我建了一个共享文件 就是想把B 中的文件放到这里)以上就是我的做法 ,希望大家多帮我想想 那个地方有问题,小女真的很急呀
      

  14.   

    大哥我看你的IP地址我就石化了,你能在192.168.1.1里面放置文件???一般公司这个IP基本上都路由的IP,还有,你这个就算不是路由的Ip也是一个广播的Ip,我真心担心你们网管会不会被辞退
      

  15.   

    大哥 (怒)我说的 ID地址就是一个比喻! 真实的IP 当然不是了
    这个我懂的。
      

  16.   

    怎么有2个 Java 是什么东东 。。  还一男一女!!
      

  17.   

    你懂得还蛮多的,一个小女子做Java到这种程度不简单了
      

  18.   

    我以前做过那么一个项目差不多跟你的类似,就是服务器往别的服务器写文件,但是都没遇到你所说的问题。建议你在把file的绝对路径打印出来看看是否是路径问题,file.getAbsoluteFile()
      

  19.   

    共享文件夹的方式我没有做过,你可以在C服务器上搭建个FTP环境吗?B到C用FTP将文件传给C,这个很简单。
      

  20.   


    哥们别误导妹子行不?谁告诉你 192.168.1.1 这玩意一定是 路由地址的? 还有广播IP怎么算?子网掩码都没有,你就全知道了?还鄙视人家的网管。。妹子,你这样直接\\IP\文件 的 访问 我还真没用过,也不确定行不行,,,,,不过既然是WIN下,你可以试试将你的共享文件夹做一个磁盘映射,映射到本地
      

  21.   

    继续提供资料,如果不想用socke的话 
    看看这个吧资料来源:http://blog.csdn.net/chenleicom/article/details/6697260
    用jcifs-0[1].8.3.jar这个包帮助实现,跟直接new File(路径)比较相似
      

  22.   

    继续提供资料,如果不想用socke的话 
    看看这个吧资料来源:http://blog.csdn.net/chenleicom/article/details/6697260
    用jcifs-0[1].8.3.jar这个包帮助实现,跟直接new File(路径)比较相似
      

  23.   

    用IO流直接往共享文件夹里面写文件这部分代码还没走到就不能走了
    我在判断文件是不是存在就处问题了
    文件的路径我都看了好几遍了
    File file = new File("\\\\192.168.1.75\\gx\\test.txt");
    文件都是这样改了
    java 输出后的结果是
    \\192.168.1.75\gx\test.txt
    这就是转译的结果吧?
    现在就是路径我觉得对 但是文件存在判断就是不存在
    在一个 你说的权限是怎么回事呀?
    是不是给这个共享文件的权限呀? 那都应该给什么权限呢?是(Administrator,还是电脑名,还是数据库名)以上的我都给这个共享文件了
      

  24.   

    1.输出你new File()后的绝对路径
    2.看看应用服务器和程序部署的服务器之间能不能ping通,可不可以相互访问和共享.
    3.然后在你本机看看能不能访问到那个路径的文件,如果可以再到服务器看看能不能访问
      

  25.   

    要么在网上邻居里把共享内容映射为网络硬盘,把权限问题交给WINDOWS处理。要么用程序解决共享机器访问权限问题,搜索: java 访问共享文件夹 用户密码
      

  26.   

    现在是文件存储服务器 ping WEB服务器 OK 
    WEB服务器 ping 我的文件存储服务器不通
    是不是应为这个呀 ?
      

  27.   

    你的B服务器需要给C服务器写文件,那么B服务器就必须要有C服务器提供的那个共享文件夹的可读可写的权限才行,你的B服务器是那个用户登录的就给那个用户权限。你把C的那个文件夹设置为全都可读可写试试吧
      

  28.   

    C 的文件夹读写权限都给了
    但是我有一个疑问就是  用户这个事,
    我访问B 只是通过WEB 程序访问,这个用户是放在B 中的数据库中的一个用户而已(也就是WEB应用中的一个用户)
    我现在不是很清楚 B-->C 用户是谁?
    不知道我描述的清楚不谢谢你 abstruct 一直帮我再看这个问题。
      

  29.   

    用户肯定是B电脑的用户,你登录B电脑肯定需要用户的撒,如果是windows那么默认是administrator,因为你是A上传到B,但是B要通过写文件的方式把A传上来的文件写到C中,所以B的当前系统用户需要C给的他赋权限,让他能有权限去读写C的共享文件夹
      

  30.   

    所有电脑都是windows如果A进B是 administrator
    那么B 进C 也是administrator  是这么理解吧那么在C中 administrator 是最大权限的用户
    所以 C 中的共享文件 一定会给administrator 读写的权限
    (我都查看了共享文件夹 它有administrator 这个用户的读写权限)
    1 那么是不是可以说 这个问题和权限无关了呢?
    2 上面有人说 ping 这个问题  我现在就是 A--> B 能ping 通
       B--->C ping 不通  是不是这个问题导致我的文件判断说是不存在呢
    现在还没有到流写文件,就已经不能在往下走了。
      

  31.   

    很明显 abstruct 对你有意思
      

  32.   

    是windows 自己带的那个远程连接我是来问问题的。希望大家进来的都是帮助我解决问题的。
      

  33.   

    你这人很无聊诶 人家楼主理了你嘛?人家abstruct 只不过想帮她解决问题。你竟然那样说.
    我是帮abstruct问的..
      

  34.   

    可是你当时明明是自己问的,没提abstruct 
      

  35.   

    这个无所谓,只要你服务器能ping同C,平且能够打开那个共享文件夹,那么用打开的那个共享文件夹的url就可以了
      

  36.   


    测试成功,环境是:
      我的电脑win7系统( 192.168.0.54 )
     共享文件的主机是XP系统192.168.0.100服务器开启来宾账户,共享文件设置读写权限
    共享文件为XP机器  192.168.0.100上total文件夹下的1.txt文件public class TestFileGongXiang {
    public static void main(String[] args) throws MalformedURLException, SmbException {
    // SmbFile file = new SmbFile("smb://guest: @192.168.0.100/total/1.txt");
    String filepath = "\\\\192.168.0.100\\total\\1.txt";
    File file = new File(filepath);
    System.out.println(filepath);
    if(file.exists()){
    System.out.println(true + "  "+ file.getName());
    }else{
    System.out.println(false);
    }
    }
    }运行结果:
    \\192.168.0.100\total\1.txt
    true  1.txt
      

  37.   

    服务器开启来宾账户,共享文件设置读写权限
    是不是服务器上有guests 才是来宾账户账户呀
    这个我已经有了呀
      

  38.   

    嗯,其实只要能访问到服务器共享的文件就可以了你为什么还不能取到文件,表示很不理解对了,你访问的文件是不是文本文件.txt结尾的
    我之前测试的时候,新建的1.txt文件在工作机上一开始也不能访问到
    一直是false,但是我把访问的文件名改成
    \\\\192.168.0.100\\total\\1.txt.txt
    竟然就能得到文件了,可能是因为公司 电脑系统的问题,显示的明明是1.txt文本文件
    访问的时候却还要多加个.txt
    表示很灵异
      

  39.   

    还没解决?说了二个问题
    一个是权限问题。
    一个是网络问题。。
    超过这个二个问题的话
    “在IT界,除了天方夜谭的技术,所有的问题我都能解决,我解决不了的,你找别人也木有用”某位CEO说的嘎嘎
      

  40.   


    现在你说的 是我的问题A -> B (服务器) 这个OK了
    现在主要的问题是 B--> C(文件服务器)有问题
    还是说找不到文件! 权限 读写都加了 guests 也都有加了 还是不好用。
      

  41.   

    我的电脑右键映射网络驱动器,映射好后跟操作本地文件一样,网络方面就全由windows来负责了,以前的项目就是这么搞的
      

  42.   


    我再问下  我映射了一个新的盘符叫 Z 
    那么程序方面 我的地址怎么样写呢?
    以前是\\\\192.168.2.100\\test\\1.txt
    192.168.2.100 是我的文件电脑IP
    现在是不是改成 服务器的IP 比如
    \\\\192.168.2.160\\Z
    这样修改呀?
      

  43.   

    直接Z:\\a.txt的形式跟操作本地文件一样
      

  44.   

    1)直接Z:\\a.txt的形式跟操作本地文件一样
    2)共享文件夹要有写权限
      

  45.   

    问题解决了
    上面大家说的也是对的,文件的权限必须给的
    读写权限也要给
    我的问题主要是tomcat上
    把tomcat 设置为域用户启动就好了
    谢谢大家的帮忙!