WP_UPLOAD_BITS()没有在本地主机中提供正确的文件路径

时间:2017-05-14 作者:Mayeenul Islam

我正在尝试将文件上载到uploads/, 我成功地使用wp_upload_bits(). 我对一切都很满意,我认为事情已经完成了。

但当我试图删除文件时din\'t use wp_add_attachment() 等等,所以我需要unlink() 使用其路径的文件。所以我存储了文件数组。当我试图使用文件路径时,我发现它已损坏。

X:xampphtdocswordpress/wp-content/uploads/2017/05/filename.jpg
我在Windows中使用WAMP。我尝试使用XAMPP。然后尝试使用Nginx 1.10.1-结果相同。然后我检查了wp_upload_dir():

var_dump(wp_upload_dir());
问题是它正在返回:

array(6) {
   ["path"]=> string(52) "X:\\xampp\\htdocs\\wordpress/wp-content/uploads/2017/05"
   ["url"]=> string(53) "http://localhost/wordpress/wp-content/uploads/2017/05"
   ["subdir"]=> string(8) "/2017/05"
   ["basedir"]=> string(44) "X:\\xampp\\htdocs\\wordpress/wp-content/uploads"
   ["baseurl"]=> string(45) "http://localhost/wordpress/wp-content/uploads"
   ["error"]=> bool(false)
}
你可以看到问题出在斜杠上,斜杠是前进的错误组合(/) 和后斜杠(\\) 在那里。我想这就是问题的根源。

我知道我可以使用WP_CONTENT_DIR 和一些硬编码字符串,但我希望尽可能多地使用动态特性。

我现在能做什么?

编辑我在这里做了很多工作。顺便说一句,我认为只有这一部分才是关键:

$attachment_file = wp_upload_bits( $_FILES[\'my_attachment\'][\'name\'][$key], null, file_get_contents($_FILES[\'my_attachment\'][\'tmp_name\'][$key]) );
The$key 因为有多个文件,并且对每个文件都执行相同的操作。

1 个回复
最合适的回答,由SO网友:Jason Rush 整理而成

我遇到了同样的问题(在Windows上的WAMP上获得类似“X:xampphtdocswordpress/wp-content/uploads/2017/05/filename.jpg”的路径)。问题似乎是由于update_post_meta() passing values through stripslashes() 存储数据时。

解决方法是在传递给update\\u post\\u meta()的值周围添加wp\\u slash()。

您可能正在调用update\\u post\\u meta(),如下所示:

update_post_meta( $id, \'doesnt_work\', $data );
您需要在update\\u post\\u meta()之前或调用update\\u post\\u meta()时向数据中添加wp\\u slash()

update_post_meta( $id, \'does_work\', wp_slash( $data ) );
最终结果:

array ( \'file\' => \'C:\\\\wamp64\\\\www\\\\wpdev\\\\wpdev_test/wp-content/uploads/2017/08/filename\', ....

结束

相关推荐

将WordPress附件导入wp-Content/Uploads/中的自定义目录

我希望有人能阐明我试图解决的这个问题,即使只是简单地改变我的思维过程,告诉我如何解决这个问题。我正在将一个基于CakePHP的定制CMS web应用程序导入WordPress,方法是遍历数据库,进行大量SQL查询,构建数组,最后输出必要的XML文件,以便使用WordPress导入工具导入。目前我已经很好地导入了类别、标签和帖子/页面,没有问题,但问题似乎出在图像上。基于CakePHP的CMS中当前的图像格式是images/year/month/day/post_id/image_name.ext据我所知,