这是我的代码,我有多个输入字段,因此我想在提交后上传图片,但是这样就只上传了第二张图片。
表单页面
<script>
function sendimg() {
alert("ok");
var newname = $('#txtname').val();
var file_data1 = $('#inputfile1').prop('files')[0];
var file_data2 = $('#inputfile2').prop('files')[0];
var form_data = new FormData(); // Create a form
form_data.append('inputfile[]', file_data1);
form_data.append('inputfile[]', file_data2);
$.ajax({
url: "img2.php",
type: 'post',
cache: false,
contentType: false,
processData: false,
data: {form_data, name:newname},
success: function (response) {
alert(response);
}
});
}
</script>
<input type='file' name='inputfile[]' id='inputfile1'>
<input type='file' name='inputfile[]' id='inputfile2'>
<input class="button" type="button" id="post_ad_btn" name="post_ad_btn" value="POST AD" onclick="sendimg();">
upload.php
$src = $_FILES['inputfile'][0]['tmp_name'];
$targ = "../".$_FILES['inputfile'][0]['name'];
move_uploaded_file($src, $targ);
$src = $_FILES['inputfile'][1]['tmp_name'];
$targ = "../".$_FILES['inputfile'][1]['name'];
move_uploaded_file($src, $targ);
答案 0 :(得分:2)
form_data.append('inputfile', file_data1);
form_data.append('inputfile', file_data2);
您正在覆盖旧值。要通过POST将数组发送到PHP,您需要在输入名称的末尾附加[]
,处理数组时事情会有些复杂,所以最好的选择就是通过传递表格来序列化表格到FormData
构造函数。在进行此操作时,最好使用适当的jQuery事件绑定。
<form>
<input type='file' name='inputfile[]' id='inputfile1'>
<input type='file' name='inputfile[]' id='inputfile2'>
<input class="button" type="button" id="post_ad_btn" name="post_ad_btn" value="POST AD">
</form>
<script>
$("#post_ad_btn").on("click", function (e) {
alert("ok");
var form = $(this).closest("form");
var form_data = new FormData(form);
$.ajax({
url: "upload.php",
type: 'post',
cache: false,
contentType: false,
processData: false,
data: form_data,
success: function (response) {
alert(response);
}
});
});
</script>
答案 1 :(得分:1)
inputfile
字段必须作为PHP的数组出现,如下所示:
form_data.append('inputfile[]', file_data1);
form_data.append('inputfile[]', file_data2);
中查看第三个示例
答案 2 :(得分:1)
不是因为附加名称相同吗?如果您想要一个数组,我相信正确的方法是放[]。
form_data.append('inputfile []',file_data1); form_data.append('inputfile []',file_data2);