2011-10-30 3 views
1

Utilisez l'option de téléchargement pour autoriser les utilisateurs de mon site à télécharger des images de profil stockées dans des dossiers correspondant à leur nom d'utilisateur. Par exemple, un utilisateur avec le nom d'utilisateur "mrx" a le dossier "/ beta/profiles/mrx/avatars /". Cela fonctionne bien sur mon système local, mais quand j'ai téléchargé seulement le dossier parent "mrx" est créé avec la permission "0000"; Je passe le dossier de téléchargement pour les utilisateurs via une entrée cachée qui a le chemin de leur dossier comme valeur. Am en utilisant CodeIgniter et Webroot ressemble à ceImpossible de créer le dossier

public_html/ beta/application /système / actifs/ profils/ /mrx/ m/

Le dossier mrx est censé avoir le " avatars "à l'intérieur, mais n'est pas créé par mon script uploadify;

Ceci est le script uploadifiy

if (!empty($_FILES)) { 
    $file = new Uploader(); 
    $path = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/'; 
    if(!file_exists($path)) 
    { 
     mkdir($path,0777,true); 
    } 
    $file_temp = $_FILES['Filedata']['tmp_name']; 
    $file_name = $file->prep_filename($_FILES['Filedata']['name']); 
    $file_name = ereg_replace(" ","_",$file_name); 

    $file_ext = $file->get_extension($_FILES['Filedata']['name']); 
    $real_name = $file_name; 
    $newf_name = $file->set_filename($path, $file_name, $file_ext,TRUE); 
    $file_size = round($_FILES['Filedata']['size']/1024, 2); 
    $file_type = preg_replace("/^(.+?);.*$/", "\\1", $_FILES['Filedata']['type']); 
    $file_type = strtolower($file_type); 
    $targetFile = str_replace('//','/',$path) . $newf_name; 
    move_uploaded_file($file_temp,$targetFile); 

    $filearray = array(); 
    $filearray['file_name'] = $newf_name; 
    $filearray['real_name'] = $real_name; 
    $filearray['file_ext'] = $file_ext; 
    $filearray['file_size'] = $file_size; 
    $filearray['file_path'] = $targetFile; 
    $filearray['file_temp'] = $file_temp; 
    //$filearray['client_id'] = $client_id; 

    $json_array = json_encode($filearray); 
    echo $json_array; 
}else{ 
    echo "1"; 
} 

Et ce contrôleur qui passe le dossier à Uploadify

function avatar() 
     { 

      $this->isloggedin(); 
      $data['title'] = "Your Avatar | PheedBakk"; 
      $data['username'] = $this->session->userdata("username"); 
      $data['user_id'] = $this->session->userdata('user_id'); 
      $data['avatar'] = $this->site_config->get_setting_value('default_avatar'); 
      $data['user'] = $this->user_model->profile($data['username']); 
      $data['upload_folder'] = "/beta/profiles/".$this->session->userdata('username')."/avatars"; 



      $this->load->view('templates/user_header',$data); 
      $this->load->view('templates/user-left-bar'); 
      $this->load->view('settings/avatar'); 
      $this->load->view('templates/user-right-bar'); 
      $this->load->view('templates/footer'); 
     } 

Qu'est-ce que je fais mal?

+0

similaires à: http://stackoverflow.com/questions/2862867/php-mkdir-issue – Luke

Répondre

0

Créer un dossier, puis l'autre sans jeu récursif true ...

$path1 = "/beta/profiles/$username"; 
$path2 = "/beta/profiles/$username/avatars"; 

    mkdir($path1,0777); 
    mkdir($path2,0777); 

ou appelez chmod sur le répertoire une fois que le dossier est créé:

chmod("/beta/profiles/$username/avatars", 0777); 
Questions connexes