我正在上传文件,这样用户在选择文件后无需点击“上传”按钮。它工作正常,但我还需要发送一个额外的参数,因为我根本没有进入Javascript,我无法弄清楚如何发送它。
html:
<form enctype="multipart/form-data" target="_blank" name="send_img" id="send_img" method="post" action="img_upload.php">
<input type="hidden" id="group_id" name="group_id" value="2" />
<input type="file" class="hide" id="uploaded_file" name="uploaded_file" onChange="Handlechange();"/>
<button type="submit" id="btn">Subir fotos!</button>
</form>
<div onclick="HandleBrowseClick();" id="fakeBrowse" >Load a picture</div>
剧本:
<script language="JavaScript" type="text/javascript">
function HandleBrowseClick()
{
var fileinput = document.getElementById("uploaded_file");
fileinput.click();
}
function Handlechange()
{
var fileinput = document.getElementById("uploaded_file");
var textinput = document.getElementById("filename");
textinput.value = fileinput.value;
}
</script>
我不知道如何发送group_id变量(我有一个php变量,所以它可以在任何地方回显,甚至在脚本中)。我尝试了许多方法,没有运气。那么如何在img_upload.php中传递和获取该变量? 我想:
var group_id = document.getElementById("group_id").value;
会成功,但我错了: - /
我还感到有趣的是,如果我将表单标记修改为action="img_upload.php?group_id=2"
,我无法通过$_GET['group_id'];
在img_upload.php中我正在使用这个其他变量并将其插入数据库。所以如果我能以这样的方式得到变量,我会把它变成一个php变量(我试着在最后一行中尽可能清楚),这真的很酷。
我还要添加Chrome Developer Tool中的内容:
Request Payload
------WebKitFormBoundarydOdbB5IQ8RbA8CRR
Content-Disposition: form-data; name="uploaded_file[]"; filename="photo-5.JPG"
Content-Type: image/jpeg
------WebKitFormBoundarydOdbB5IQ8RbA8CRR--
这就是让我觉得问题出在数据发送脚本
的原因答案 0 :(得分:1)
当您点击“提交”时,所有输入字段都将使用HTTP POST提交给服务器。
在服务器上,您可以使用(java)
之类的内容来解释请求request.getAttribute('uploaded_file');
在PHP中,这将是:
$myFile = $_REQUEST['uploaded_file'];
请参阅PHP manual。
编辑:您的输入标记无效(删除“/”):
<input type="hidden" id="group_id" name="group_id" value="2">
EDIT2:
添加以下内容(作为测试):
<script type="text/javascript">
var el = document.getElementById('send_img');
el.addEventListener('submit', function(){
alert(document.getElementById("group_id").value);
return true;
}, false);
</script>