出于安全原因,我发现无法使用 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 帖子以获取有关此主题的更多信息:
- Can’t get the complete address while uploading a file
- How to get the file path from HTML input form in Firefox 3
更新:
最初的问题让我认为您只需要将“文件名”复制到另一个 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/