我发现出于安全原因,无法使用 javascript 设置表单文件输入字段值。
我只想将文件输入复制到另一个表单并将其发布,我搜索了解决方法但找不到任何内容,这可能吗?
更新:我的代码:
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 帖子以获取有关此主题的更多信息:
- 上传文件时无法获取完整地址 https://stackoverflow.com/questions/1676035/cant-get-the-complete-address-while-uploading-a-file
- 如何在 Firefox 3 中从 HTML 输入表单获取文件路径 https://stackoverflow.com/questions/81180/how-to-get-the-file-path-from-html-input-form-in-firefox-3
UPDATE:
最初的问题让我认为你只需要复制“文件名”到另一个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>
不幸的是,上面的方法不起作用。火狐将回归"Security error code: 1000"
如果你尝试上面的例子。
至于一些解决方法,您可能需要检查大卫·多沃德 https://stackoverflow.com/users/19068/david-dorward的建议:
- Using cloneNode https://stackoverflow.com/questions/2220120/html-copy-form-fields-to-another-form-including-file-input-field/2221786#2221786
- 移动输入字段appendChild提交表格之前 https://stackoverflow.com/questions/2220120/html-copy-form-fields-to-another-form-including-file-input-field/2221756#2221756
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)