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

pMa*_*Man 9 html javascript

我之前看到,出于安全原因,无法使用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>
Run Code Online (Sandbox Code Playgroud)

其他任何文件输入工作正常,我可以收到$ _POST,但$ _FILES没有值.而且这个代码也很好.我觉得这个系数够了吗?

Dan*_*llo 7

是的,您可以将<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>
Run Code Online (Sandbox Code Playgroud)

但是,在现代浏览器中,您只能访问文件名,而不能访问完整路径.您可能需要查看以下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>
Run Code Online (Sandbox Code Playgroud)

不幸的是,上述方法无效."Security error code: 1000"如果您尝试上面的示例,Firefox将返回 .

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


Que*_*tin 5

您可以将文件输入移动到另一个表单(使用appendChild或insertBefore),提交表单,然后将其移回.