如何为HTML输入的文件设置值?

注意:

以下答案与评论反映了2009年旧版浏览器的状态。现在,您实际上可以在2017年使用JavaScript和dataTransfer或FileList对象动态/以编程方式设置文件输入元素的值。

有关详细信息和演示,请参见此问题的答案:
如何以编程方式设置文件输入值(即:拖放文件时)?

如何设置此值?

<input type="file" />
老丝2020/03/24 09:39:56

实际上我们可以做到。我们可以使用FormToMultipartPostData库在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

西门理查德2020/03/24 09:39:56

1)文件输入中的默认值问题不是“出于安全原因而完成”,但是浏览器“只是出于没有充分的理由而未能实现”:请参阅此深入报告

2)一个简单的解决方案是在文件输入的顶部使用文本输入,例如here当然,您需要一些代码来发送文件,现在使用文本输入中的值而不是文件输入。

就我而言,做HTA应用程序不是问题,我根本不使用表格。

神无StafanTom2020/03/24 09:39:56

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

番长斯丁Itachi2020/03/24 09:39:56

不是您的问题的答案(其他人都回答了),但是如果您希望对上传的文件字段具有某些编辑功能,则可能需要做的是:

  • 通过仅打印文件名或URL,下载该文件的可单击链接,或者如果它是图像,即可显示该字段的当前值:仅将其显示(可能显示为缩略图)
  • <input>标签上传新文件
  • 一个复选框,选中该复选框将删除当前上传的文件。请注意,无法上传“空”文件,因此您需要使用类似方法清除字段值
伽罗番长2020/03/24 09:39:56

你不能

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

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