Wordpress文件上传编程错误

时间:2014-08-05 11:30:03

标签: php wordpress upload

我在Wordpress中创建一个静态页面。并希望上传并附上图片(id 159)。但是下面的代码不起作用。我在here中找到了此代码。

我的代码:

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

2 个答案:

答案 0 :(得分:1)

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

大多数情况下使用这样的脚本时,问题是您尝试将上传文件移动到的文件夹的读/写权限。

编辑: 啊,我看到了;我认为问题是你要上传$ _FILES&#39;名称&#39;而不是&#39; tmp_name&#39;。

改变:

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

答案 1 :(得分:1)

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

执行时

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