0

我正在上传文件,这样用户在选择文件后不需要点击“上传”按钮。它工作正常,但我还需要发送一个额外的参数,因为我根本不使用 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 开发人员工具中获得的内容:

Request Payload
------WebKitFormBoundarydOdbB5IQ8RbA8CRR
Content-Disposition: form-data; name="uploaded_file[]"; filename="photo-5.JPG"
Content-Type: image/jpeg


------WebKitFormBoundarydOdbB5IQ8RbA8CRR--

这就是让我认为问题出在数据发送脚本中的原因

4

1 回答 1

1

当您单击“提交”时,所有输入字段都将使用 HTTP POST 提交到服务器。

在服务器上,您可以使用 (java) 之类的内容来解释请求

request.getAttribute('uploaded_file');

在 PHP 中,这将类似于:

$myFile = $_REQUEST['uploaded_file'];

请参阅PHP 手册

编辑:您的输入标签无效(删除“/”):

<input type="hidden" id="group_id" name="group_id" value="2">

编辑2:

添加以下内容(作为测试):

<script type="text/javascript">
var el = document.getElementById('send_img');

el.addEventListener('submit', function(){
alert(document.getElementById("group_id").value);
return true;
}, false);
</script>
于 2012-12-23T21:06:49.380 回答