2011-10-30 20 views
1

uploadifyを使用して自分のサイトのユーザーが自分のユーザー名に対応するフォルダに保存されているプロフィール画像をアップロードできるようにしていますか? たとえば、ユーザ名が「mrx」のユーザは、フォルダ「/ beta/profiles/mrx/avatars /」を持っています。 ローカルシステムでうまく動作しますが、アップロードしたときに、 "mrx"親フォルダのみが "0000"というアクセス権で作成されます。 私は自分のフォルダへのパスを値として持つ非表示の入力を介して、ユーザーのアップロードフォルダを渡します。 CodeIgniterのとウェブルートを使用していますと、MRXフォルダが "を持っていることになっているこのフォルダを作成できません

のpublic_html/ ベータ/ アプリケーション/ システム/ 資産/ プロファイル/ /MRX/ メートル/

のように見えます私のアップロードスクリプトでは作成されていません。

これは間違ってやっている何

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'); 
     } 

をuploadifyするフォルダを渡しコントローラ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"; 
} 

そして、これですか?

+0

ます。http:/ /stackoverflow.com/questions/2862867/php-mkdir-issue – Luke

答えて

0

... trueに再帰的なセットなし

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

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

またはフォルダが作成されると、ディレクトリにchmodコマンドを呼び出すことが一つのフォルダを作成し、他:

と同様に
chmod("/beta/profiles/$username/avatars", 0777); 
関連する問題