2012-12-28 70 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 [ '圖標'] [ '名']))'謝謝你的想法工作。 –