2013-04-09 3 views
1

"training"이라는 폴더로 파일을 옮기기 위해 아래에 작성된 코드를 사용했습니다. 이미지를 저장하려면 wordpress에있는 폴더에 파일 업로드

<td> 
    <input type="file" name="training_image" accept="image/*" id="traing-image"value="<?php echo esc_attr(get_the_author_meta('training_image', $user->ID)); ?>" class="regular-text" /> 
    </td> 

내가이

$training_path = time().'_'.$_FILES['training_image']['name']; 
$tmp_file_name = $_FILES['training_image']['tmp_name']; 
$upload_dir = wp_upload_dir(); 
if($training_path){ 
     move_uploaded_file($tmp_file_name,$upload_dir['baseurl'].'/training/'.$training_path); 
} 
update_user_meta($user_id, 'training-image', $training_path); 

을 쓴하지만 난 어떤 결과를 가져올 수 없습니다. 내가 실수 한거야? 도와주세요.

이 내 전체 코드

function training_user_profile_fields($user) { ?> 
<h3><?php// _e("Extra profile information", "blank"); ?></h3> 

<table class="form-table"> 
    <tr> 
    <th><label for="traing-image"><?php _e("Upload Your Training Certificate:"); ?></label></th> 
     <td> 
     <input type="file" name="training_image" id="traing-image"value="<?php echo esc_attr(get_the_author_meta('training_image', $user->ID)); ?>" class="regular-text" /> 
     </td> 
    </tr> 
</table> 
<?php } 

add_action('personal_options_update', 'save_extra_user_profile_fields'); 
add_action('edit_user_profile_update', 'save_extra_user_profile_fields'); 

function save_extra_user_profile_fields($user_id) { 

if (!current_user_can('edit_user', $user_id)) { return false; } 
$training_path = time().'_'.$_FILES['training_image']['name']; 
$tmp_file_name = $_FILES['training_image']['tmp_name']; 
echo "filename".$_FILES['training_image']['tmp_name']; exit; 
$upload_dir = wp_upload_dir(); 
if($training_path){ 
     move_uploaded_file($tmp_file_name,$upload_dir['baseurl'].'/training/'.$training_path); 
} 
update_user_meta($user_id, 'training-image', $training_path); 
} 
+0

당신이 완전한 형태로 – Sabari

답변

0

당신은 잘못하고있는 것입니다. $upload_dir['baseurl']은 업로드 디렉토리에 URL을 부여하고 디렉토리에는 absolute path이 아닙니다. URL을 사용하여 파일을 업로드하거나 이동할 수 없습니다.

HTTP wrapper does not support writeable connections

그래서 $upload_dir['baseurl'] $ upload_dir [ '기본 디렉토리']로 변경해야합니다.

이 양식의 enctype은 기본적으로 enctype 속성이없는 multipart/form-data(enctype="multipart/form-data")

UPDATE

워드 프레스 프로파일 형태로 설정되어 있는지

$training_path = time().'_'.$_FILES['training_image']['name']; 
$tmp_file_name = $_FILES['training_image']['tmp_name']; 
$upload_dir = wp_upload_dir(); 
if($training_path){ 
     move_uploaded_file($tmp_file_name,$upload_dir['basedir'].'/training/'.$training_path); 
} 
update_user_meta($user_id, 'training-image', $training_path); 

이 또한 확인해야한다. 훅을 사용하여 추가 할 수 있습니다. 이 난은 $ training_path를 인쇄 할 때

+0

없음을 표시 할 수 있습니다 귀하의 테마에 functions.php

add_action('user_edit_form_tag', 'add_enctype'); function add_form_enctype() { echo 'enctype="multipart/form-data"'; } 

희망이 추가. 나는 시간과 '_'만 찾을 수는 있지만 $ _FILES [ 'training_image'] [ 'name'];을 찾을 수 없습니다. 그래서 나는 혼란 스럽다. – Ranjit

+0

@Ranjit에서 양식에 enctype을 설정하지 않았을 수 있습니다. 양식을 모두 붙여주십시오. 폼 태그에 enctype = "multipart/form-data"설정 – Sabari

+0

이것은 WordPress 사용자 프로필 양식입니다. 양식에 추가 필드를 추가하십시오. – Ranjit

관련 문제