我使用下面编写的代码将文件移动到名为“training”的文件夹。
<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 :(得分:0)
你做错了。 $upload_dir['baseurl']
将URL
提供给上传目录,而不是absolute path
到目录。您无法使用网址上传或移动文件。
HTTP wrapper does not support writeable connections
因此$upload_dir['baseurl']
应更改为$ upload_dir [&#39; basedir&#39;]。
应该是
$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")
更新
默认情况下,WordPress配置文件表单没有enctype
属性。您可以使用钩子添加它。在主题functions.php
add_action('user_edit_form_tag', 'add_enctype');
function add_form_enctype () {
echo 'enctype="multipart/form-data"';
}
希望这有帮助