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

2020/10/02 01:21 · javascript ·  · 0评论

如何设置此值?

<input type="file" />

由于安全原因,您不能。

想像:

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

您不希望所访问的网站能够做到这一点,对吗?=)

你不能

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

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

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

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

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

就像其他所有人都说的那样:您无法使用JavaScript自动上传文件。

然而! 如果您有权访问要在代码中发送的信息(即,没有passwords.txt),则可以将其上传为blob -type,然后将其视为文件。

服务器最终将看到的内容与实际设置的值没有区别<input type="file" />最终,诀窍是从服务器开始一个新的XMLHttpRequest()。

function uploadFile (data) {
        // define data and connections
    var blob = new Blob([JSON.stringify(data)]);
    var url = URL.createObjectURL(blob);
    var xhr = new XMLHttpRequest();
    xhr.open('POST', 'myForm.php', true);

        // define new form
    var formData = new FormData();
    formData.append('someUploadIdentifier', blob, 'someFileName.json');

        // action after uploading happens
    xhr.onload = function(e) {
        console.log("File uploading completed!");
    };

        // do the uploading
    console.log("File uploading started!");
    xhr.send(formData);
}

    // This data/text below is local to the JS script, so we are allowed to send it!
uploadFile({'hello!':'how are you?'});

那么,您可能将其用于什么呢? 我用它来将HTML5画布元素上传为jpg。这为用户省去了打开file input元素,仅选择刚刚调整大小,修改等的本地缓存图像的麻烦。但是,它适用于任何文件类型。

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

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

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

在html中定义:

<input type="hidden" name="image" id="image"/>

在JS中:

ajax.jsonRpc("/consulta/dni", 'call', {'document_number': document_number})
    .then(function (data) {
        if (data.error){
            ...;
        }
        else {
            $('#image').val(data.image);
        }
    })

后:

<input type="hidden" name="image" id="image" value="/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8U..."/>
<button type="submit">Submit</button>

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

本文地址:http://javascript.askforanswer.com/ruheweihtmlshurudewenjianshezhizhi.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!