我在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
答案 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"]
中,您需要引用该文件才能移动。