我正试着在我的WordPress站点的前端创建我自己的自定义图像/文件上传器。当我上传一个文件时,它会很好地到达我的数据库,但在媒体库中,文件不能完全上传,当我检查我的wp-content/uploads文件夹时,什么都没有,我该如何纠正这个问题。
媒体库unfinished upload file in Media Library中的文件图像
<form method="post" enctype="multipart/form-data">
Select image to upload:
<input type="file" name="img-upload" id="img-upload" />
<input type="submit" value="Upload Image" name="submit">
</form>
require_once(ABSPATH . "wp-admin" . '/includes/image.php');
require_once(ABSPATH . "wp-admin" . '/includes/file.php');
require_once(ABSPATH . "wp-admin" . '/includes/media.php');
$image = $_POST['img-upload'];
$upload_dir = wp_upload_dir();
$file_name = basename($image);
//$file_data = file_get_contents($file);
$file_dir = $upload_dir['basedir'] . "/" . basename($image);
$file_type = wp_check_filetype($image,null);
$attachment = array(
'guid' => $file_dir,
'post_mime_type' => $file_type['type'],
'post_title' => preg_replace('/\\.[^.\\s]{3,4}$/', '', $image),
'post_content' => '',
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $image,0 );
require_once(ABSPATH . 'wp-admin/includes/image.php');
$attach_data = wp_generate_attachment_metadata($attach_id, $file_dir);
wp_update_attachment_metadata($attach_id, $attach_data);发布于 2020-02-06 19:00:07
从网站前端的表单上载附件。
<form id="featured_upload" method="post" action="#" enctype="multipart/form-data">
<input type="file" name="my_image_upload" id="my_image_upload" multiple="false" />
<input type="hidden" name="post_id" id="post_id" value="0" />
<?php wp_nonce_field( 'my_image_upload', 'my_image_upload_nonce' ); ?>
<input id="submit_my_image_upload" name="submit_my_image_upload" type="submit" value="Upload" />
</form>保存附件的代码:
<?php
// Check that the nonce is valid, and the user can edit this post.
if (
isset( $_POST['my_image_upload_nonce'], $_POST['post_id'] )
&& wp_verify_nonce( $_POST['my_image_upload_nonce'], 'my_image_upload' )
&& current_user_can( 'edit_post', $_POST['post_id'] )
) {
// The nonce was valid and the user has the capabilities, it is safe to continue.
// These files need to be included as dependencies when on the front end.
require_once( ABSPATH . 'wp-admin/includes/image.php' );
require_once( ABSPATH . 'wp-admin/includes/file.php' );
require_once( ABSPATH . 'wp-admin/includes/media.php' );
// Let WordPress handle the upload.
// Remember, 'my_image_upload' is the name of our file input in our form above.
$attachment_id = media_handle_upload( 'my_image_upload', $_POST['post_id'] );
if ( is_wp_error( $attachment_id ) ) {
// There was an error uploading the image.
} else {
// The image was uploaded successfully!
}
} else {
// The security check failed, maybe show the user an error.
}
?>来源:https://developer.wordpress.org/reference/functions/media_handle_upload/#user-contributed-notes
https://stackoverflow.com/questions/45384135
复制相似问题