2012-12-28 67 views
0

我有两个图像上传选项一个图标和另一个图像,我做了一个自定义ajax图像上传功能在jQuery中,它发送值处理PHP。我得到图像上传正常工作,即如果图标被点击只有图标上传,如果图像被点击只有图像被升华,我的问题是我得到这两个值设置在PHP中导致错误未选中(图标或图像)字段。Ajax图像上传php处理

我的代码是:

HTML

<form name="change" enctype="multipart/form-data"> 
<input name="icon" type="file" /> 
<input name="image" type="file" /> 
</form> 

<div id="icon"><img src="---" /></div> 
<div id="image "><img src="---" /></div> 
<div id="result"></div> 

的jQuery(阿贾克斯)

$('#icon img').click(function() { 
    $('input[name=image ][type=file]').val(null); 
    $('input[name=icon][type=file]').trigger('click'); 
}); 

$('#image img').click(function() { 
    $('input[name=icon][type=file]').val(null); 
    $('input[name=image ][type=file]').trigger('click'); 
}); 

$('input[name=icon], input[name=image ]').change(function() { 
    change(); 
}); 


function change(){ 
var formData = new FormData($('form[name=change]')[0]); 
formData.append("CustomField", "This is some extra data"); 
$.ajax({ 
    url: 'upload.php', 
    type: 'POST', 
    data: formData, 
    success: (function(data){ 
    $('#result').html(data); 
    }), 
    cache: false, 
    processData: false, 
    contentType: false 
}); 
} 

PHP

if(isset($_FILES['icon']) && !empty($_FILES['icon']) && $_FILES['icon'] !== ''){ 
echo 'icon set'.'<br />'; 
} 
else{ 
echo 'icon not set'.'<br />'; 
} 

if(isset($_FILES['image ']) && !empty($_FILES['image ']) && $_FILES['image '] !== ''){ 
echo 'image set'.'<br />'; 
} 
else{ 
echo 'image not set'.'<br />'; 
} 

如果任何一个图标或图像被选中上传,我得到的结果为。

icon set 
image set 

请参阅和建议是什么在PHP导致错误。

谢谢。

+0

您是否尝试过&&空($ _ FILES [ '图标']),即中间状态!? –

回答

1

的关键“形象”和“图标”的键阵列有关上传,所以它们被设置,不为空,而不是字符串===“”。试试这个:

print_r($_FILES); 

然后看看你是否得到了你所期望的。此外,可能是FORMDATA对象 - 谷歌为 “PHP FORMDATA”

+0

终于得到了它的工作,像这种'如果(isset($ _ FILES [ '图标'])&&!空($ _ FILES [ '图标'] [ '名']))'谢谢你的想法工作。 –