2009-11-08 110 views
219

注:如何将值设置为HTML中的文件输入?

的答案&评论下面反映的2009年的旧版浏览器现在,您可以使用JavaScript和数据传递或文件列表对象实际设置文件输入元素的值动态/编程状态2017年

见这个问题的详细信息,答案以及演示:
How to set file input value programatically (i.e.: when drag-dropping files)?

如何设置这个的价值?

<input type="file" /> 
+3

我做了这个一个完整的引用和最新日期(2013年12月)答案在这里:还记得和重新填充文件输入(HTTP://计算器。com/a/20537822/588079) – GitaarLAB 2013-12-16 03:26:09

+2

[如何以编程方式设置文件输入值(即:拖动文件时)?](https://stackoverflow.com/questions/47515232/how-to-set- file-input-value-programatically-ie-when-drag-dropping-files) – 2017-11-28 03:23:21

回答

381

您不能因安全原因。

试想:

<form name="foo" method="post" enctype="multipart/form-data"> 
    <input type="file" value="c:/passwords.txt"> 
</form> 
<script>document.foo.submit();</script> 

你不想你访问能够做到这一点的网站,你呢? =)

+0

你可以清除它吗?它让我感到害怕,每次我重新访问时都会记住文件名。 Pelase请参阅http://stackoverflow.com/questions/41807471/can-i-reset-the-seletced-file-name-of-an-html-5-file-selector – Mawg 2017-01-23 13:25:35

+1

我了解安全问题,但不应该浏览器能够区分危险的本地文件路径和像dataUrl这样更无害的东西?也许这是一个管道梦。 – cowlinator 2017-01-27 22:49:46

+3

怎么样拖ñdrop功能,没有办法将该文件设置为输入字段? – Vedmant 2017-08-19 07:46:10

26

你不能。这是一个安全措施。想象一下,如果有人写JS将文件输入值设置为一些敏感数据文件?

100

你不能。

设置文件输入值的唯一方法是由用户选择文件。

这是出于安全原因而完成的。否则,您将能够创建一个自动从客户端计算机上载特定文件的Javascript。

41

不回答你的问题(这人回答),但如果你想有一个上传的文件领域的一些编辑功能,您可能需要做的是:

  • 显示当前值通过只打印文件名或URL这个领域的,可点击链接下载它,或者如果它是一个形象:刚刚表现出来,可能是由于缩略图
  • <input>标签上传新文件
  • 复选框,当选中,删除当前上传的文件。请注意,没有办法上传“空”文件,因此您需要类似的东西来清除该字段的值。
-3

其实我们可以做到这一点。 我们可以使用FormToMultipartPostData Library在c#中使用webbrowser控件来设置文件的默认值。我们必须下载该库并将其包含在我们的项目中。 Webbrowser使用户能够在表单内导航网页。 加载网页后,将执行webBrowser1_DocumentCompleted中的脚本。 所以,

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
    { 
     FormToMultipartPostData postData = 
      new FormToMultipartPostData(webBrowser1, form); 
     postData.SetFile("fileField", @"C:\windows\win.ini"); 
     postData.Submit(); 
    } 

请参阅下载和完整的参考下面的链接。

https://www.codeproject.com/Articles/28917/Setting-a-file-to-upload-inside-the-WebBrowser-com

+0

欢迎您提供解决方案的链接,但请确保您的答案是如果没有它:[在链接中添加上下文](// meta.stackexchange.com/a/8259/165483),以便您的同行用户可以了解它是什么以及它为什么存在,然后引用最相关的部分如果目标页面不可用,您要链接的页面。 [//只是链接的答案可能会被删除。](// stackoverflow.com/help/deleted-answers) – 2017-11-29 22:02:12

+0

另请参见[如何以编程方式设置文件输入值(即:在拖放文件时)?]( https://stackoverflow.com/q/47515232/584192) – 2017-11-29 22:02:34

相关问题