2012-02-07 3 views
0

У меня есть форма с возможностью загрузки изображения с компьютера на сервер, но это не сработает. Я не получаю сообщение об ошибке, так что это довольно раздражает. (Сначала я получил разрешение, но это было решено путем изменения прав), но теперь, когда я отправляю форму, все идет нормально, но файл не копируется в папку назначения. (Папка существует: Я пробовал с file_exist() ...)copy php no error

Вот часть кода:

<form action='/changingfruit/index.php?item=bad' name='form' method='post' enctype='multipart/form-data'> 
    <tr> 
     <td><input type='text' name='titel_nl' value="titel nl" /><br/><input type='text' name='titel_fr' value="titel fr"/></td> 
     <td><input type='file' name='text_nl' id='text_nl' accept="image/*"/><br/><input type='file' name='text_fr' id="test_fr" accept="image/*"/></td>   
     <td class="vTop"><input type="submit" value="Bewaar"/></td> 
    </tr> 
    </form> 

часть, где значения не отправить в БД:

$str_titel_nl = $_POST["titel_nl"]; 
    $str_titel_fr = $_POST["titel_fr"]; 
    $str_text_nl = $_FILES["text_nl"]["name"]; 
    $str_text_fr = $_FILES["text_fr"]["name"]; 
     if(!empty($_FILES["text_nl"]["name"])){ 
     $tmp = $_FILES['text_nl']['tmp_name'] ; 
     $foto = $_FILES['text_nl']['name'] ; 
     $copied = copy($tmp, $images_nl.$foto); 
    unlink($tmp); 
     } 

(конечно, выше, является лишь частью кода: но эта часть не будет работать:

 if(!empty($_FILES["text_nl"]["name"])){ 
     $tmp = $_FILES['text_nl']['tmp_name'] ; 
     $foto = $_FILES['text_nl']['name'] ; 
     $copied = copy($tmp, $images_nl.$foto); 
    unlink($tmp); 
     } 

код ниже этой части а lso отлично работает, поэтому нет ошибки, но и нет изображения. Кто-нибудь знает, где проблема?

Большое спасибо!

НАЙДЕНО ОТВЕТ Так что это действительно проблема разрешения. Все было 777, но в последней папке, где было поставлено изображение, было 755. (/ fruits/img/2012/thumb /) большой палец был 755. Я просто упустил это. Спасибо всем за помощь!

+0

должен проверить апачский журнал ошибок, или там, где вы спасаете ошибки PHP –

+3

* BLEARGH! * Вам не нужно '' на каждой строке кода. Просто откройте один блок, поместите там свой код и закройте блок. – Polynomial

ответ

3

Ваш код загрузки очень грязный. Вместо использования копии вы должны использовать файл move_uploaded_file, а также проверить, что он действительно работал, а затем выполнить все необходимые действия.

Я также не уверен, почему каждая ваша линия начинается с <?php и заканчивается ?>? Вы можете написать все это как один блок вместо этого, и я думаю, что это также будет иметь больше смысла и сделает ваш код чистым.

Последнее что я рекомендую читать "Handling File Uploads" from the PHP Manual. Это может пролить свет на проблемы, которые у вас возникают.

P.S. Попробуйте добавить сверху ini_set("display_errors","On"); error_reporting(E_ALL); и посмотреть, есть ли у вас сообщения об ошибках.

+0

с этой строкой: ini_set ("display_errors", "On"); error_reporting (E_ALL); Я до сих пор не получаю ошибок. – user993177

+0

Вы уверены, что это внутри блока PHP? Если это так, это обязательно должно привести к некоторым ошибкам. Не могли бы вы разместить весь файл PHP на pastebin.com? –

+0

Да, это внутри php-блока, потому что после кода, который я показал здесь, есть другой код для записи элементов в db, и это работает нормально. Так что, вероятно, есть еще небольшая проблема с разрешениями. – user993177

0

вы можете попробовать это

$flag = @copy($temp, $move); 
if ($flag === true) 
{ 
    print "Uploaded"; 
} 
0

Я отправил простое решение для загрузки файлов, не заботясь о реализации.

Нажмите, чтобы увидеть поток

image uploading issue in codeigniter 2.1.0

Пожалуйста, прочтите этот раздел

в этом $uploader->getMessage(); возвратит строку ошибки, связанные с недостаточностью загрузки. Поэтому вы можете понять, почему загрузка не удалась.

Благодаря