Resim Upload Sorunu [Çözüldü]
Merhaba.
Aşağıdaki fonksiyonla resim yüklemeye çalıştığım zaman resimdeki hatayı alıyorum.
Bunun çözümü nedir?
Çözümü
İnput name'i dizi olarak değilde normal olarak post etmek gerekiyor.
Yani name="dosya[]" değil, name="dosya" şeklinde olacak.
index.php
<form action="sonuc.php" method="post" enctype="multipart/form-data">
Dosya Seçin: <br>
<input type="file" name="dosya[]" multiple> <br>
<button type="submit">Yükle</button>
</form>
sonuc.php
<?php
function yukle($dosya, $boyutLimit = 1, $dosya_uzantilari = null)
{
$sonuc = [];
if ($dosya['error'] == 4){
$sonuc['hata'] = 'Lütfen dosyanızı seçin.';
} else {
if (is_uploaded_file($dosya['tmp_name'])){
$uzanti = explode('.', $dosya['name']);
$uzanti = $uzanti[1];
$gecerli_dosya_uzantilari = $dosya_uzantilari ? $dosya_uzantilari : [
'image/jpeg',
'image/png',
'image/gif'
];
$gecerli_dosya_boyutu = (1024 * 1014) * $boyutLimit;
$dosya_uzantisi = $dosya['type'];
if (in_array($dosya_uzantisi, $gecerli_dosya_uzantilari)){
if ($gecerli_dosya_boyutu >= $dosya['size']){
$ad = uniqid();
$yukle = move_uploaded_file($dosya['tmp_name'], 'upload/' . $ad . '.' . $uzanti);
if ($yukle){
$sonuc['dosya'] = 'upload/' . $ad . '.' . $uzanti;
} else {
$sonuc['hata'] = 'Bir sorun oluştu ve dosyanız yüklenemedi.';
}
} else {
$sonuc['hata'] = 'Yükleyeceğiniz dosya en fazla 3MB olabilir.';
}
} else {
$sonuc['hata'] = 'Yüklediğiniz dosya geçerli bir formatta değil.';
}
} else {
$sonuc['hata'] = 'Dosya yüklenirken bir sorun oluştu.';
}
}
return $sonuc;
}
$sonuc = yukle($_FILES['dosya']);
if (isset($sonuc['hata'])){
echo $sonuc['hata'];
} else {
echo '<a href="' . $sonuc['dosya'] . '">Dosyayı görmek için tıklayın!</a>';
}
echo "<pre>";
print_r($_FILES);
?>
Çoklu halini de bırakalım.
<pre><code>
function yukle($dosya, $boyutLimit = 1, $dosya_uzantilari = null)
{
$sonuc = [];
if ($dosya['error'] == 4){
$sonuc['hata'] = 'Lütfen dosyanızı seçin.';
} else {
$say = count($dosya['name']);
for($i = 0; $i < $say; ++$i){
if (is_uploaded_file($dosya['tmp_name'][$i])){
$uzanti = explode('.', $dosya['name'][$i]);
$uzanti = $uzanti[1];
$gecerli_dosya_uzantilari = $dosya_uzantilari ? $dosya_uzantilari : [
'image/jpeg',
'image/png',
'image/gif'
];
$gecerli_dosya_boyutu = (1024 * 1014) * $boyutLimit;
$dosya_uzantisi = $dosya['type'][$i];
if (in_array($dosya_uzantisi, $gecerli_dosya_uzantilari)){
if ($gecerli_dosya_boyutu >= $dosya['size'][$i]){
$ad = uniqid();
$yukle = move_uploaded_file($dosya['tmp_name'][$i], 'upload/' . $ad . '.' . $uzanti);
if ($yukle){
$sonuc['dosya'][] = 'upload/' . $ad . '.' . $uzanti;
} else {
$sonuc['hata'] = 'Bir sorun oluştu ve dosyanız yüklenemedi. Dosya Adı: '.$dosya['name'][$i];
}
} else {
$sonuc['hata'] = 'Yükleyeceğiniz dosya en fazla 3MB olabilir. Dosya Adı: '.$dosya['name'][$i];;
}
} else {
$sonuc['hata'] = 'Yüklediğiniz dosya geçerli bir formatta değil.Dosya Adı: '.$dosya['name'][$i];
}
} else {
$sonuc['hata'] = 'Dosya yüklenirken bir sorun oluştu. Dosya Adı: '.$dosya['name'][$i];
}
}
}
return $sonuc;
}
$sonuc = yukle($_FILES['dosya']);
if (isset($sonuc['hata'])){
echo $sonuc['hata'];
} else {
foreach($sonuc['dosya'] as $key => $dosyaAdi){
echo '<a href="' . $dosyaAdi . '">'.($key+1).'.Dosyayı görmek için tıklayın!</a><br />';
}
}
echo "<pre>";
print_r($_FILES);
</code></pre>