解决方案 »

  1.   

    不能。
    以安全角度来说,用户电脑对服务器来说是个黑箱,用户要上传文件,那么文件内容和文件名就足够了,实在难以想象还有什么正常的场景需要文件的完整路径。(某些人还企图在代码里指定上传的文件,也一样是不允许的)特别是互联网场景。
    如果是企业内部应用,如果真的有这个需求,可以考虑使用ActiveX控件来实现文件上传之类的功能。
      

  2.   

    算是内部使用吧。具体情况是我用c++开发的一个客户端(类似浏览器)加载网站。然后在网站中选择文件,我需要知道选择的文件的全路径,我这个客户端才能对文件进行操作。用fileupload可以获取全路径,但是会根据文件大小影响时间。这是怎么回事呢?
    感谢您的回答。
      

  3.   

    当你的服务器端的asp.net代码运行时,客户端的<form>早就上传完毕了,也就是说FileUpload中的文件早就传送到服务器了。而不是什么“只获取文件名而不真正的上传文件”。你可以不去保存文件,但是文件必须先传送到服务器。另外,规范的html是不允许上传客户端的文件路径的(只能上传文件名)。你那种想法,只能适应7、8年前的IE6、IE7而以,其它浏览器都不支持。
      

  4.   

    嗯,感谢回答。。我用c++做的浏览器就是用IE内核的,需要修改IE设置就可以获取全路径的。那我再问下能不能有什么方法可以优化一下时间,我可能需要上传一个几百M的文件。
      

  5.   

    如果你用你的桌面程序开发,不但可以有很好、很高级的用户体验(例如支持用户鼠标拖放、甚至“摇一摇”就上传当前正在打开查看的文件),而且可以有很好的上传性能(例如将文件参数给服务器的时候,可能服务器直接就能把过去传过的相同内容但是名字不同的文件(或者文件磁盘块)直接复制就好了,而不需要客户端再上传了。这样你的上G的文件也可以“秒传”)。做桌面程序是很好的。那些用一个web页面嵌入的假c/s程序,基本上全都无法经得起性能测试和(熟练)用户操作体验的要求。
      

  6.   

    为何不用javascript直接获取文件名?
      

  7.   

    感谢您的回答。程序都已经做好了,现在在临时改方案不太可能了,现在就是要解决这个问题了。fileupload这个控件上传文件的原理是什么呢?浏览完成后,点击同一form内的一个无关紧要的按钮,也会引起他的上传,为什么这样呢?
      

  8.   


    安全问题,不能,除非使用ActiveX
      

  9.   

    你这么去理解吧,ASP.NET里面的Submit动作,是将整个网页里面的数据对象(包括你输入的文本、上传的文件)一同全部post到IIS,然后IIS去根据你的服务端控件去挨个的解析和赋值,这样你就可以直接通过后台代码获取到对象的值了
      

  10.   

    话说,做了个假的"壳",加载IE,冒充CS,实际上却是BS,但是又不理解BS的原理,还不想学,只想找个办法糊弄过去
    你实在不适合干程序员
      

  11.   

    嗯,教训的是。我只是个低层的程序员,没有改变用户需求和决定方案的权利,这个程序是两部分组成的,我只是负责c/s段,而b/s段是另外一批人在做。就这样吧,还是很谢谢你。