http://www.iteye.com/problems/43278
这里面有个例子,说可以,但我怎么尝试都不可以。网上的所有程序都是这样子的。
var path = "c:\\123.text";
         var uploadFile = document.getElementById("uploadFile");
         var WshShell=new ActiveXObject("WScript.Shell");
         //将路径放入剪切板
window.clipboardData.setData('text', path);
         uploadFile.focus();
//Ctrl + A 操作
    WshShell.sendKeys("^a");
    //Ctrl + V 操作(sendKeys对于中文赋值操作显得无力,所以只能模拟键盘操作)
    WshShell.sendKeys("^v");这段代码的意思是,使用WshShell,把剪贴板的数据黏贴到INPUT TYPE=FILE里面。我试了,没有效果。FILE控件ctrl+v是没有效果的呀,怎么程序这么写呢?是不是要设置FILE可编辑,还是要设置其他东西?

解决方案 »

  1.   

    给楼主个建议,不要一下把两个东西都加进来,你可以分开测一下,首先试试你的WshShell能不能给一般的input type="text"的输入框赋值,然后再试试能不能给input type="file"的文本框赋值,自习琢磨琢磨就知道问题出在哪了。
      

  2.   

    怎么都是理论派的。
    "给楼主个建议,不要一下把两个东西都加进来,你可以分开测一下,首先试试你的WshShell能不能给一般的input type="text"的输入框赋值,然后再试试能不能给input type="file"的文本框赋值,自习琢磨琢磨就知道问题出在哪了。"你连我的代码都没有执行过吧。
      

  3.   

    网上似乎还有一个例子,是利用WScript,模拟键盘输入。这个例子是基于IE-only的,而且似乎是ie6-only的,并且严格受到浏览器安全设定、杀毒软件限制。之所以file的初始值没法设定,那完全是基于安全考虑,如果file可以设定,那么黑客只要弄个隐藏的表单,自动填上客户最终要的系统文件的路径,然后自动提交,这样,用户私密信息不知不觉中就泄露了。
      

  4.   

    嗯,我也测试完毕。IE7或以下版本可以模拟键盘可以通过。
    不知道有什么方式可以代替。
    听说有SWFUPLOAD,不知道能不能解决我的问题?
    或者APPLET能不能解决我的问题呢?
      

  5.   

    可以用一个文本框模拟一个。其实就是一个假的。
    file文本框如果初始值,那这个值一定来源于服务器。把这个值显示在文本框里面,这个文本框和file重叠并且没有边框,这样用户用眼睛看是看不出区别来的。
    然后当file的值改变之后,把这个值赋值给文本框。剩下的在后台处理就可以了。
      

  6.   

    其实要我说吧。。就是做一个隐藏域。或者说隐藏域都不用,直接在后台,如果取不到file的值,那么就调默认的文件。    客户是不懂技术的,你可以告诉他: 我们就是通过不一样的手段达到您要的目的了。  就OK了。
      

  7.   

    my_caterpillar
    fainfy
    zl3450341你们讲的好像是同一个思路,用input type=hidden做。但是问题是,我要的是客户端IE8选取客户端的文件,而不是服务端的。如果在服务端访问文件那就简单了。
      

  8.   

    难道要自己重写IE8的file控件?
      

  9.   


    默认值,你默认值能设计为客户端的数据吗???
    你怎么知道客户端是否有这样的文件?
    人家不用WINDOWS,也许用Linux还能用IE吗?
      

  10.   

    客户端已经限制IE8了,那显然不会是linux,只能是windows了
      

  11.   

    楼主可参考将此标签清空的做法来实现看看,下面给出代码:
    上传文件时,选择了文件后想清空文件路径的两种办法:
    JS代码 
    <input type="file" id="fileupload" name="file" />  
    第一种: (display:none时不能用)
    var obj = document.getElementById('fileupload') ;   
    obj.select();   
    document.selection.clear();  第二种:(无论display:none或block都可以用)
    var obj = document.getElementById('fileupload') ;   
    obj.outerHTML=obj.outerHTML; 
    例如可以使用obj.outerHTML="..."来试试
      

  12.   


    是种不错的思路,但是首先要把文件传到服务器才行。我跟客户沟通过,就是要自动选择文件。业务是医保结账,要自动选择的那个文件就是病人的医药信息及费用文件,由其他系统(应该是病人看病的系统,我们的系统是医保结算的系统)自动产生。这个文件的特点是,1 位置固定 2 每个病人的内容不一样 3 由于排队人多,对速度有要求,每次都选文件太慢,客户就是想直接点上传,就可以做医保结算业务。我再跟我们的技术老大沟通,老大叫我找找其他方案,最好兼容FF,有的医院用LINUX系统。我现在的思路是:
    1 直接用applet读本地文件并且解析成字符串,发到后台。
    2 看到swfUpload技术,想试下,不知道能不能解决我的问题。同学们,不知道你们有没有好的经验可以分享给我~
      

  13.   

    自动产生。这个文件的特点是,1 位置固定 2 每个病人的内容不一样有的医院用LINUX系统我看楼主根本就没有区别Web和传统应用啊。
    自动产生文件:你认为这个文件有可能会生成在客户端吗?
      

  14.   


    这个是不行的,如果弄个假的,那么<input type="file">里肯定没有值,肯定上传不成功,客户既然想弄个默认的路径,那肯定是想不选择,但至少也要上传成功。
      

  15.   


    这个文件有其他系统产生,具体如何产生我不了解。总之那个文件对于我们的B/S系统来说,是产生在BROWSER端的,现在需要在客户端实现一个效果:在页面打开的时候,默认选择那个产生的文件。
      

  16.   

    我解决了,使用applet做个上传控件,过百家医院在使用。
      

  17.   

    <input type="file" name="uploadImage" value="${products1.bpic }" >
    这样可不可以将数据库中取出的值显示在file控件上啊