我试图在我的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);
答案 0 :(得分:0)
您可以尝试使用此代码。它会起作用
<?php
if(isset($_POST['submit'])){
require_once( ABSPATH . 'wp-admin/includes/image.php' );
require_once( ABSPATH . 'wp-admin/includes/file.php' );
require_once( ABSPATH . 'wp-admin/includes/media.php' );
$attachment_id = media_handle_upload( 'img-upload', '' );
if ( is_wp_error( $attachment_id ) ) {
$attachment_url="";
}
else {
$attachment_url=wp_get_attachment_url( $attachment_id );;
}
if(!empty($attachment_url)){
//do the stuff you want to
}
}
?>
答案 1 :(得分:0)
从网站前端的表单上载附件。
<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