2015-11-02 3 views
-1

У меня есть этот скрипт, который загружает файл в каталог и формирует данные в базу данных. Но некоторые, как файл не загружается, и говорит, что переменная «$ filedestination» не определена.PHP upload file not working right

if(!isset($error)){ 

try{ 

    if(isset($_FILES['cv'])){ 
    $file = $_FILES['cv']; 

    $file_name = $file['name']; 
    $file_tmp = $file['tmp_name']; 
    $file_size = $file['size']; 
    $file_error = $file['error']; 

    $file_ext = explode('.', $file_name); 
    $file_ext = strtolower(end($file_ext)); 

    $allowed = array('pdf', 'doc'); 

    $cl_name = e($_POST['cl_name']); 

    if(in_array($file_ext, $allowed)){ 
     if($file_error === 0){ 
     $new_file_name = 'cv-'.$cl_name.'-'.$file_ext; 
     $file_destination = 'cv/' . $new_file_name; 

     if(move_uploaded_file($file_tmp, $file_destination)){ 

     } else{ 
      $error[] = 'No se podido subir el c.v.'; 
     } 
     }else{ 
     $error[] = 'Problema'; 
     } 
    } 
    } 

    $handler = $db->prepare('INSERT INTO work_with_us (work_area, cl_name, cl_last_name, cl_dir, cl_city, cl_provincia, cl_tel, cl_email, work_comentario, is_cv, cv_url) VALUES (:work_area, :cl_name, :cl_last_name, :cl_dir, :cl_city, :cl_provincia, :cl_tel, :cl_email, :work_com, :is_cv, :cv_url)'); 

    $handler->execute(array(
    ':work_area' => e($_POST['work_area']), 
    ':cl_name' => e($_POST['cl_name']), 
    ':cl_last_name' => e($_POST['cl_last_name']), 
    ':cl_dir' => e($_POST['cl_dir']), 
    ':cl_city' => e($_POST['cl_city']), 
    ':cl_provincia' => e($_POST['cl_provincia']), 
    ':cl_tel' => (int)$_POST['cl_tel'], 
    ':cl_email' => e($_POST['cl_email']), 
    ':work_com' => e($_POST['work_comentario']), 
    ':is_cv' => 'Si', 
    ':cv_url' => $file_destination 
)); 

}catch(PDOException $e){ 
    $error[] = $e->getMessage(); 
} 

}

Вещь у меня есть один и тот же сценарий, использованный в другом файле и для загрузки фотографий и она отлично работает, но это один для .pdf и .doc его как-то не работает.

+0

попробуйте инициализировать '$ file_destination' до пустого в начале блока try. '$ file_destination = '';' Также добавьте опции 'png' и' doc' из массива '$ allowed', чтобы он работал для файлов .png и .doc. – Suyog

ответ

1

Вы только что позволяет PDF и документ:

$allowed = array('pdf', 'doc'); 

Так PNG не допускается. Что касается файла слова, убедитесь, что вы загружаете файл .doc, а не .docx, так как он не будет разрешен. Вы можете добавить список разрешенных расширений, охватывающий все расширения Microsoft Word.

Что касается расширений Microsoft, отметьте this link.

+0

Ну, похоже, это неправильно. Я использовал pdf в этом скрипте и не работал. У меня есть тот же скрипт в другом файле для фотографий и его работы. и он сделал опечатку для .pdf и .doc – abonive

+0

Что делает 'in_array ($ file_ext, $ allowed)' return? – KAD

+0

его ошибка не возвращается. только Примечание: Неопределенная переменная: file_destination в /Applications/MAMP/htdocs/reparo/work_with_us.php в строке 79 – abonive

0

просто определите переменную $ filedestination во всем мире из-за блока if. Ваш код в порядке. Дайте R/W разрешение папке, в которую вы хотите переместить/загрузить файл. На самом деле из-за разрешения R/W ваш файл не перемещается. Попробуйте команду Chmod для предоставления разрешения R/W; если вы работаете над linux.

0

Пожалуйста, проверьте, есть ли какое-либо содержимое в $error или проверить $error значение переменной ...

мое другое предложение, а не проверить $file['error'],

проверка (getimagesize($_FILES["fileToUpload"]["tmp_name"]!==false)

+0

Ошибка не возвращается. – abonive

+0

Если это не дает вам никаких ошибок, то перейдите к моему другому предложению, а затем дайте мне знать, с какими проблемами вы столкнулись !!!! – Abbas

+0

if (in_array ($ file_ext, $ allowed)) { if ($ file_error === 0) { $ new_file_name = 'cv -'. $ Cl_name .'- '. $ File_ext; $ file_destination = 'cv /'. $ New_file_name; if (move_uploaded_file ($ file_tmp, $ file_destination)) { } else { $ error [] = 'No se podido subir el c.v.'; } } else { $ error [] = 'Problema'; }} еще { $ ошибка [] = "Не вдаваясь в первом цикле" } Теперь проверьте значение ошибки – Abbas

0

Пожалуйста, убедитесь, что папка с именем 'cv' существует в вашем локальном сервере.

И я только что заметил в вашем коде: $new_file_name = 'cv-'.$cl_name.'-'.$file_ext;

Вы будете иметь выход так: Myfile-док

Когда предполагается, что: MyFile.doc

Итак, я полагаю, что это должно быть:

$new_file_name = 'cv-'.$cl_name.'.'.$file_ext; 

Я не знаю, может ли это помочь вам, но я просто заметил это.