免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2082 | 回复: 5
打印 上一主题 下一主题

请教:如何区分文件上传时,文件存在还是大小为0? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-07 17:18 |只看该作者 |倒序浏览
我在使用struts做文件上传的时候,想判断用户在IE的file对象中指定的上传的文件在用户机器上是否存在,有什么办法呢?
我在ActionForm里定义了一个FormFile变量,
private FormFile fileName;

在ActionForm的validate()里,我想通过读文件的一个字节是否有值来判断文件是否存在:

        InputStream stream = fileName.getInputStream();
        byte[] buffer = new byte[1];
        int bytesRead = stream.read(buffer, 0, 1);
                if(-1 == bytesRead) {
                ... ...

可是,结果是,如果客户上传了一个存在的,但是没有内容的文件,bytesRead的值也是-1。

怎么样才能区分出客户选择的文件是不存在,还是内容是空?

谢谢大家!!

[ 本帖最后由 xiaoshinn 于 2006-3-7 17:45 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-03-07 17:45 |只看该作者
//FormFile.getFileSize();

FormFile.getFileName(); && FormFile.getFileSize();

[ 本帖最后由 kakasi 于 2006-3-7 18:46 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2006-03-07 17:47 |只看该作者
文件不存在,或者存在但是大小为0,FormFile.getFileSize(); 方法的返回值都是0。
fileName.getFileName();方法返回的就是用户输入的文件名。比如说,用户在文件选择的时候,在file对象里写了一个并不存在的文件, C:/aaa.txt,那么,fileName.getFileName();方法返回的就是aaa.txt,它并不去判断这个文件是否存在。

[ 本帖最后由 xiaoshinn 于 2006-3-7 17:50 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2006-03-07 17:55 |只看该作者
原帖由 xiaoshinn 于 2006-3-7 18:47 发表
文件不存在,或者存在但是大小为0,FormFile.getFileSize(); 方法的返回值都是0。
fileName.getFileName();方法返回的就是用户输入的文件名。比如说,用户在文件选择的时候,在file对象里写了一个并不存在的文件 ...



这样,,,

自己写一个text,一个button来模拟file控件,text editable=false
避免用户手动输入file名

论坛徽章:
0
5 [报告]
发表于 2006-03-07 17:59 |只看该作者
呵呵,
我也不想那么麻烦的,可是领导就是要区分出来,文件不存在,以及存在但是大小为0这2种情况,然后给用户显示不同的信息。
或者,用JavaScript能不能判断出客户端的一个文件是否存在,毕竟JS是运行在客户端的IE上的,比起在服务器端来判断用户机器上的文件是否存在能方便些?
正在寻找答案.....

论坛徽章:
0
6 [报告]
发表于 2006-03-07 18:05 |只看该作者
js直接肯定不行了,根本没有客户端文件操作权限;fso可以,不过犯得着么,,~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP