Wordpress文件上传程序错误


Wordpress file upload Programmatically Error

我在Wordpress中创建了一个静态页面。并希望上传和附加图像在后(id 159),。但是下面的代码不工作。我在这里找到了这个代码。

我代码:

if(isset($_POST['submitbutton'])) 
{
$file = $_FILES["attachment"]["name"];
$parent_post_id = 159;
$filename = basename($file);
$upload_file = wp_upload_bits($filename, null, file_get_contents($file));
if (!$upload_file['error']) {
$wp_filetype = wp_check_filetype($filename, null );
$attachment = array(
    'post_mime_type' => $wp_filetype['type'],
    'post_parent' => $parent_post_id,
    'post_title' => preg_replace('/'.[^.]+$/', '', $filename),
    'post_content' => '',
    'post_status' => 'inherit'
);
$attachment_id = wp_insert_attachment( $attachment, $upload_file['file'], $parent_post_id );
if (!is_wp_error($attachment_id)) {
    require_once(ABSPATH . "wp-admin" . '/includes/image.php');
    $attachment_data = wp_generate_attachment_metadata( $attachment_id, $upload_file['file'] );
    wp_update_attachment_metadata( $attachment_id,  $attachment_data );
    }
  }
}
HTML代码:

<form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="attachment"/>
    <input type="submit" name="submitbutton" value="Vorschau">
</form> 
错误:

Warning: file_get_contents(Desert.jpg): failed to open stream: No such file or directory in D:'wamp'www'hossinger'wp-content'themes'hossinger'template-reports.php on line 81

你得到什么样的错误?将"error_reporting(E_ALL);"添加到页面顶部,可以查看脚本生成的所有警告和错误。

大多数情况下,像这样的脚本,问题是你试图移动上传文件的文件夹的读/写权限。

编辑:啊,我明白了;我认为问题是你试图上传$_FILES"名称"而不是"tmp_name"。

改变:

$upload_file = wp_upload_bits($filename, null, file_get_contents($file));

:

$upload_file = wp_upload_bits($filename, null, file_get_contents($_FILES["attachment"]["tmp_name"]));

试着用$_FILES["attachment"]["tmp_name"]代替$_FILES["attachment"]["name"]

执行时服务器上不存在

$_FILES["attachment"]["name"]。当您上传文件时,PHP将该文件放置在临时目录中,该目录具有(依赖于配置的)随机名称,该名称存储在$_FILES["attachment"]["tmp_name"]中,并且是您需要引用的以便移动。