相信做过一段时间的人都知道,input框当type为file时是不能设置默认值的,这样是为了防止客户打开我们的网页,我们会自动上传它的一些文件,这些文件甚至是机密文件。
但是我有这样一个需求,公司有读卡器,可读取身份证信息,这个读卡器将会是客服在客户端使用,读完以后会产生一个身份证图片,我需要写一段客户端程序将图片自动上传至服务器,而不能让客服自己选择,因为这样客服有可能上传错误,甚至故意上传假冒图片,会导致系统内的数据失真。
换句话说,现在需求的矛盾点在于,一个是客户端语言,也就是JS,不支持文件的操作,但是,我又不能让客服自己去操作这些图片文件,如何才能解决这个冲突。
另外,读取的图片路径为固定路径,当该路径下有图片的时候,下一次读取的图片会成为空白,也就是每次读取完,我应该将生成的图片上传,并删除该图片文件。如此才可以保证读卡器可正常使用。
不知道有没有javascript的神级高手,能解决这一问题。
需求分析如下:
用JS实现自动上传文件至服务器的功能,并可以删除客户端的图片,这个能实现最好,但是这样做其实对客户端是很危险的,类似于黑客程序,但是没办法,需求如此。javascript上传文件黑客javascript filejava

解决方案 »

  1.   

    这个用js确实不行,你找找activex上传控件,看到过一个,可以支持上传指定文件夹内部的所有文件,搜一下activex文件上传,应该能找到
    你这个明显只是内部使用,用activex实现就行了,或者干脆使用C/S程序上传文件
      

  2.   

    你说几个功能基本上,是要通过安装插件控件来实现,且你本来就要安装控件了,顺便多注册个
    就IE下搞个activex,很多语言都能写
      

  3.   


    大侠可知道swfupload,这玩意用flash和JS搞的,有可能实现没。ActiveX俺不会写啊,难道英雄汉啊。
      

  4.   

    flash,也不能自动指定上传那个文件,搜索有没有这文件,删除文件操作
      

  5.   


    我明白了,大侠的意思是类似这种有可能损害客户端的程序,只有ActiveX控件能做到吗,还有其他的方式吗。
      

  6.   


    还有啊,如果需要写控件,大侠可否提供一个开发工具,难道要用VS?我擦,3个G,没搞错吧。还有提供个大概思路啊,我自己研究下。看大侠的样子,应该是搞C的那应该对控件很熟悉了啊。
      

  7.   

    其他的方式?搞个自己浏览器,改成c/s
    简单方法还是用ActiveX实现
      

  8.   

    vb,vc,delphi 。。都行 
    找个你熟的用http协议控件上传文件
      

  9.   

    uploadify现在正在使用,不能满足你的需求,你还是早一个现成的activex上传控件吧,至于会不会,这个问题没什么意义,不会你就不做了?不会得学啊,就算时间不够学习activex的开发,学会使用总不会有问题
      

  10.   

    http://www.w3.org/TR/FileAPI/
    jQuery上传文件的控件是用FileAPI写的。
    可以肯定的是,不能满足你的要求。
    自己写ActiveX控件或者浏览器插件吧。
      

  11.   


    看来各位都说只有这一种解决方案,我已经在研究ActiveX了,已经搞出来了一个基础的控件,网上模拟的,也可以使用,就是离我需要的功能相差甚远啊。在网上搜索现成的控件,似乎也没有啊。
      

  12.   

    Activex推荐这个 其实不是太难 网上找找资料 耐着性子 一下午就可以了 简单的应该能实现 C#的好像可以
      

  13.   

    ActiveX控件 正解,别无他路。
      

  14.   

    ActiveX控件,系统就给绑定到IE上了,还有因为安全机制带来的安装麻烦,不如直接做成程序,在后台自动运行。
      

  15.   

    是得用插件,写个ActiveX就不麻烦了。
      

  16.   

    都是搞java的,CS都老差了。。
      

  17.   

    那表示同情 java应该也有类似的吧 CSDN上大牛好多的  一个个问
      

  18.   

    要读取客户端文件并删除,不应该是web的事。
    不要见了需求都认为是你份内的事,像这个我个人觉得是读卡器应用应该提供的功能,产生图片了,放在客户端和上传到服务器端的接口应该都要有,可配置型的。你应该要做的是提供web服务,或者rest给他们掉。把图片传上去。只要是搞web相关技术的,估计都知道web应用客户端脚本是不能进行IO操作的。与其要你开发上次的activeX,宁可是在读卡器应用扩展。就算你花一个星期搞定了,后面的扩展,维护呢,完全是个孤岛。见太多做技术的同行,在处理需求的时候都把其当作考验自己的契机,而不去想“方的圆”问题。建议跟项目管理者再沟通,提供web服务接口。自动上传和删除客户端文件操作就留给读卡器应用吧!
      

  19.   

    对于搞JAVA的来说,难于上青天。
      

  20.   

    就用java做个服务放在客户端不就行了?象tomcat等一样注册成服务就OK。
      

  21.   

    这个意思是不是我可以理解成再做一个WEB服务?
      

  22.   


    将java程序注册成windows 服务  2010-07-02 20:08:15|  分类: java |  标签:myservice  services  javaservice  程序  jar   |字号 订阅原理其实是把 java JVM 和你的程序整成一个应用,然后制作成服务。
    使用工具:JavaService
    命令: JavaService.exe -install MyService "%JAVA_HOME%\jre\bin\server\jvm.dll" -Djava.class.path="%JAVA_HOME%\lib\tools.jar;D:\win-services\myservice\lib\sql2005jdbc.jar;D:\win-services\myservice\bin\myservice.jar" -start com.mycompany.Main
    因为程序要用到第三方的jar包比如数据库连接jar包,log4j包等,但这些jar包如果打包到程序包中的话需要另外一个工具来处理,所以不把第三方用到的jar包打包到程序的包中,只需要在-Djava.class.path 参数中把用到的所有jar包路径包含近来即可,另外程序包也需要加到路径中,要不然系统也是巧妇难为无米之炊了。我这里myservice.jar 就是程序的jar包,然后还需要设定入口类我这里是:com.mycompany.Main。这样就建立成立一个服务。进入系统的服务管理中即可启动MyService如果需要删除一个服务:
    JavaService.exe -uninstall MyService默认情况下,程序运行环境的根是C:\windows下,那么如果程序里使用了文件系统的文件,而且是使用相对目录,那么就会出现找不到文件的错误,因为运行环境的根不是程序的目录。我们可以在建立JavaService 服务的时候指定根目录位置,参数是current例如:
    JavaService.exe -install MyService "%JAVA_HOME%\jre\bin\server\jvm.dll" -Djava.class.path="%JAVA_HOME%\lib\tools.jar;D:\win-services\myservice\lib\sql2005jdbc.jar;D:\win-services\myservice\bin\myservice.jar" -start com.mycompany.Main -current D:\services\myproject如此运行的根就指向了D:\services\myproject。当在程序里这样读取文件时:File file=new File("./1.txt");那么读取的是 D:\services\myproject\1.txt 文件
      

  23.   

    看起来蛮复杂的,不过最后一点读取文件,我可以随意读取吗,还是需要放在project下面。
      

  24.   

    随便在网上找的例子,就是用java搞个模拟HTTP上传的程序,打包成jar,再用JavaService注册成服务。
      

  25.   

    ie貌似可以用控件 js操作吧,我试过