这是我用来将文件上传到WordPress的代码
define(‘WP_DEBUG’, true);
$filename = "test.png";
$tmpFile = download_url("http://url.com/testing/crop/".$filename);
chmod($tmpFile, 0755);
$mimeType = wp_check_filetype($_SERVER[\'DOCUMENT_ROOT\'] . \'/testing/crop/\'.$filename);
$file_array = array(
\'file\' => $_SERVER[\'DOCUMENT_ROOT\'] . \'/testing/crop/\'.$filename,
\'url\' => $_SERVER[\'DOCUMENT_ROOT\'] . \'/testing/crop/\'.$filename,
\'type\' => $mimeType[\'type\'],
\'size\' => filesize($_SERVER[\'DOCUMENT_ROOT\'] . \'/testing/crop/\'.$filename),
\'name\' => $filename,
\'tmp_name\' => $tmpFile
);
$image = wp_handle_upload($file_array, array(\'test_form\' => FALSE, \'test_upload\' => FALSE, \'test_type\' => FALSE));
print_r($file_array);
print_r($image);
unlink($tmpFile);
?>
这是我收到的错误“上传的文件无法移动到/home/xxxx/public\\u html/wp-content/uploads/2012/09。”
我想做的是在WordPress之外有一个小的PHP脚本将图像上传到它的媒体库,然后将其发布,但此时我正处于上传阶段。
所有的权限都是正确的,因为我可以通过WordPress管理区上传。
非常感谢您的帮助。
最合适的回答,由SO网友:Otto 整理而成
这个move_uploaded_file
函数是一个PHP函数:
http://php.net/manual/en/function.move-uploaded-file.php
从这一页中需要注意的一点是:
此函数检查以确保由filename指定的文件是有效的上载文件(意味着它是通过PHP的HTTP POST上载机制上载的)。如果文件有效,它将被移动到目标指定的文件名。
您不是在此处上载文件,而是从URL下载文件,将其保存在本地,然后尝试使用wp_handle_upload
(其中使用move_uploaded_file
) 来处理它。此操作失败,因为它实际上不是上载的文件。
实际上,您要做的是所谓的“侧加载”,即从URL获取一个文件并直接加载。WordPress有一个用于此特定情况的函数,称为wp_handle_sideload
. 对于图像的特定情况,WordPress有另一个函数media_sideload_image
这做了几乎相同的事情,但也处理了所有的图像处理。
如果你真的想上传文件,而不是从URL旁加载它们(这可能是你正在尝试的测试代码),那么你需要编写一个文件上传表单,获取$_FILES[0]
参数,并将其传递给wp_handle_upload
. 如果您要专门为媒体库处理上载的图像或其他项目,请使用media_handle_upload
相反通过这些功能上传的内容必须是真实的,而不是伪造的。