javascript input type file 问题

对于 input 为 file 的组件
如何通过 js 给 它赋值
比如 :
var str ='c:/ab.txt';
var f = document.getElementById('file1');
如如 让 f.value = str;
f.value 为只读属性
如何搞??

这是java版的模拟file上传文件:
http://hi.baidu.com/ivgf/blog/item/63d69e335f8b2440ad4b5ff7.html/cmtid/43a8b5d3dff650d7a8ec9a30

这个当然了,浏览器本身的安全限制,哪能直接这么用js赋值,
如果可以的话,人家访问你的网站,你默默地把用户系统的文件都上传到你服务器上,那还得了

不行赋值的,安全限制了,想别的方式显示,不要用type=file

不行的,可以用text模拟一个file类型的input。实现修改的功能。
冒昧问问:你为什么要这么做?

浏览器安全限制不允许这样

[quote]主要是这样,当页面表单提交过去之后,由于某些选项内容 输入不合法
完了在返回到页面,这样 file 框的内容就没有了
目的是 当不合法后 能将之前选择的 文件给恢复过来 [/quote]
这样设计不是很好了,
根据用户体验设计原则,应该返回不合法输入让用户重新输入,合法的输入可以让用户进一步修改,
完全可以把合法输入隐藏起来[color=red]以防影响用户输入其他内容。[/color]

当然如果用户想修改之前合法的输入,可以通过点击“更多选项”链接或者按钮将合法输入显示出来。

可以用这种方式来实现

http://www.iajax.net/article/11

http://hi.baidu.com/bingzhecom/blog/item/116add1626673053f2de3276.html

直接赋值是不可能的,变通着搞就行了,

我发给你的文章中就能解决这个问题

如果非要显示的话,只能通过模拟input[file]控件了。
看看这个模拟:
http://blog.csdn.net/ben0133/archive/2009/03/18/4000531.aspx

另外在后台取自为空这个问题,可以将之前的路径放在隐藏域总input[hiden].
后台逻辑处理前台传来的两个个值,

1.如果两个为空,报错,
2,input[file]的value控件为空,input[hiden]的value不为空,则取input[hiden]的value
3,两个都不为空,,则取input[file]的value.

不难:看看下面几种方法:

http://www.mscto.com/dotnet/2009022454426.html