2013-04-09 52 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 2013-04-09 08:46:29

回答

0

你做错了。 $upload_dir['baseurl']URL上传目录,而不是absolute path到目录。您无法使用URL上传或移动文件。

HTTP wrapper does not support writeable connections

所以$upload_dir['baseurl']应更改为upload_dir $ [ 'BASEDIR']。

应该

$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); 

另外,还要确保你的表单的enctype设置为multipart/form-data(enctype="multipart/form-data")

UPDATE

WordPress的配置文件形式不具有默认enctype属性。通过你可以添加一个钩子。在你的主题添加此functions.php

add_action('user_edit_form_tag', 'add_enctype'); 

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

希望这有助于

+0

没有当我打印$ training_path。我只能找到时间和'_',但我找不到$ _FILES ['training_image'] ['name'] ;.所以我很困惑。 – Ranjit 2013-04-09 08:54:36

+0

@Ranjit可能你没有在你的表单中设置enctype。请粘贴您的完整表格。在表单标签中设置enctype =“multipart/form-data” – Sabari 2013-04-09 09:02:22

+0

这是wordpress用户配置文件表单。并在表单中添加额外的字段。 – Ranjit 2013-04-09 09:07:47

相关问题