javascript - HTML:将表单字段复制到另一个表单,包括 FILE 输入字段?

标签 javascript html

出于安全原因,我发现无法使用 javascript 设置表单文件输入字段值。

我只是想将一个 FILE 输入复制到另一个表单并发布,我搜索了一个解决方法但找不到任何东西,这可能吗?

更新:我的代码:

function prepareUpload( filevalue ){

document.getElementById('logo').value =filevalue;
var mform = document.getElementById('sleeker');
    ajaxUpload( mform,'<?php echo base_url(); ?>'); // a methods to upload...
}

<input class="input-file-upload" type="file" size="20" name="logodummy" id="logodummy" onchange="prepareUpload( this.value );" />

<form action="" method="post" name="sleeker" id="sleeker" enctype="multipart/form-data" onbeforesubmit="return false;">
            <p><input type="hidden" name="logo" id="logo" /></p>
        </form>

文件输入的任何其他内容都工作正常,我可以使用 $_POST 接收,但 $_FILES 没有值。而且仅此代码也可以正常工作。我觉得这个coe够用了吧?

最佳答案

是的,您可以放置​​ <input type="file">在您的 HTML 表单之外,然后使用 onChange事件填充 <input type="hidden">在发布的表单中:

<input type="file" 
       onchange="document.getElementById('hidden_file').value = this.value;" />

<form method="POST">
    <input type="hidden" id="hidden_file" value="" />
    <input type="submit" />
</form>

但是在现代浏览器中,您将只能访问文件名,而不能访问完整路径。您可能需要查看以下 Stack Overflow 帖子以获取有关此主题的更多信息:


更新:

最初的问题让我认为您只需要将“文件名”复制到另一个 HTML 表单,而不是整个 <input type="file">代表。

进一步更新,我假设你的意思是这样的:

<input type="file" 
       onchange="document.getElementById('hidden_file').value = this.value;" />

<form method="POST">
    <input type="file" id="hidden_file" value="" />
    <input type="submit" />
</form>

不幸的是,上面的方法不起作用。 Firefox 将返回 "Security error code: 1000"如果您尝试上面的示例。

至于一些解决方法,您可能需要检查 David Dorward的建议:

关于javascript - HTML:将表单字段复制到另一个表单,包括 FILE 输入字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2220120/

相关文章:

html - 调整窗口大小时 Div 顶部的空白

html - 根据屏幕分辨率更改 Material Design 响应按钮的内容

javascript - 访问 Array.forEach 中的未命名数组

javascript - Chrome 上的 HTML5 canvas 和 php 无法正常工作

html - 如何修复背景图像?

html - 用户点击同页链接后是否可以突出显示页面的某个区域?

javascript - 如何从变量中设置 JS 对象属性名称

javascript - Chrome 扩展选项并不总是显示

javascript - Backbone.js 事件未触发

javascript - 处理异步函数