2015-03-21 4 views
0

Я пытаюсь загрузить изображения в каталог, который определен на странице ввода и передан переменной $ path внутри этой функции. Прямо сейчас он загружает изображение в тот же каталог, что и сценарий загрузки, а не определенную папку с изображениями. Я переработал несколько способов, чтобы результат всегда был одним и тем же. Оба $path и $this->destination остаются пустыми, и изображение загружается не в том месте. Может ли кто-нибудь еще увидеть, что я сделал неправильно?Функция не загружается правильно

<?php 
    //set the max upload size in bytes 
    $max = 51200; 
    if(isset($_POST['upload'])){ 
     //define path to the upload directory 
     $destination = '../../../../image_folder/test/'; 
     require_once('upload.php'); 
     try { 
      $upload = new Ps2_Upload("$destination"); 
      $upload->move(); 
      $result = $upload->getMessages(); 
     } catch (Exception $e) { 
      echo $e->getMessage(); 
     } 
    } 
?> 
<!DOCTYPE html> 
<html> 
    <head> 
    <body> 
     <?php 
      if (isset($result)) { 
       echo '<ul>'; 
       foreach ($result as $message) { 
       echo "<li>$message</li>"; 
      } 
       echo '</ul>'; 
      } 

      echo "the place the files will be put is $destination"; 
     ?> 
     <form action="" method="post" enctype="multipart/form-data" id="uploadImage"> 
      <label for="image">Upload New Image</label> 
      <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max; ?>" /> 
      <input type="file" name="image" id="image" /> 
      <input type="submit" name="upload" id="upload" value="Upload" /> 
     </form> 
    </body> 
</html> 

<?php 
class Ps2_Upload { 
    //protected variables 
    protected $_uploaded = array(); 
    protected $_destination; 
    protected $_max = 51200; 
    protected $_messages = array(); 
    protected $_permitted = array('image/gif', 'image/jpeg', 'image/pjpeg', 'image/png'); 
    protected $_renamed = false; 

    public function __construct($path){ 
     if(!is_dir($path) || !is_writable($path)){ 
      throw new Exception("$path must be a valid, writable directory."); 
     } 
     $this->_destination = $path; 
     $this->_uploaded = $_FILES; 
    } 

    public function move(){ 
     $field = current($this->_uploaded); 
     $success = move_uploaded_file($field['tmp_name'], $this->destination . $field['name']); 
     if($success){ 
      $this->_messages[] = $field['name'] . " uploaded successfully to $this->destination"; 
     } else { 
      $this->_messages[] = 'Could not upload ' . $field['name']; 
     } 
    } 

    public function getMessages() { 
     return $this->_messages; 
    } 
} 
?> 

ответ

0

В конструкторе, вы имеют следующее: $this->_destination = $path;

В вашем методе move() у вас есть следующее: $success = move_uploaded_file($field['tmp_name'], $this->destination . $field['name']);

Ваша защищенная переменная _destination, но то, что вы используете в методе move(), равно destination. Перед этим не подчеркивается. Работа над этим, может решить вашу проблему:

$success = move_uploaded_file($field['tmp_name'], $this->_destination . $field['name']); 
  • Должно работать.
+0

Спасибо, теперь он сообщает мне правильную информацию, но изображение все еще загружается в каталог сценария, а не в папку назначения. –

+0

Извините, я перечитал это и взял то, что вы сказали. Я чувствую себя идиотом, но вы знаете, что они говорят о парах глаз fressh. Большое спасибо. –

0
$success = move_uploaded_file($field['tmp_name'], $this->destination . $field['name']); 

должен быть

$success = move_uploaded_file($field['tmp_name'], $this->_destination . $field['name']); 

к сведению, что у вас есть опечатка в $ this-> назначения, и она должна быть $ это -> _ назначения