我是drupal的新手,现在我需要以编程方式创建节点。
我能够创建一个简单的节点。但如果我将它与图像字段合并,它总是失败。
$file_path = drupal_realpath('tmp/test_image.jpg');
$file = (object) array(
'uid' => 1,
'uri' => $file_path,
'filemime' => file_get_mimetype($file_path),
'status' => 1,
);
$copy = file_copy($file, 'public://sites/default/files/field/image/testing/', FILE_EXISTS_RENAME);
$node->field_image[LANGUAGE_NONE][0] = (array) $copy;
它总是给我一个错误:(
The specified file could not be copied, because the destination directory is not properly configured. This may be caused by a problem with file or directory permissions. More information is available in the system log.
答案 0 :(得分:0)
我认为如果您告诉file_copy()
存储在“public:”中,则不应指定完整路径名。至少,在我看过的例子中,目标看起来更像'public:filename.ext'
。
如上面的评论所示,请检查您的日志以确定。除了Web服务器的错误日志之外,请查看Drupal是否在其“报告”部分中注明了任何进一步的详细信息。
答案 1 :(得分:0)
'public://'
= 'sites/default/files'
(或指定为默认文件夹的任何其他文件夹)。
您的代码:
$copy = file_copy($file, 'public://field/image/testing');
P.S。默认情况下FILE_EXISTS_RENAME
是默认的,因此无需定义它。
答案 2 :(得分:0)
感谢您的投入。我尝试将公共路径'sites / default / files'设置为'testing'或任何其他文件夹并设置为644.
有效。 :(
这是我的更新代码。
$file_path = drupal_realpath('test_image.jpg');
$file = (object) array(
'uid' => 1,
'uri' => $file_path,
'filemime' => file_get_mimetype($file_path),
'status' => 1,
);
$copy = file_copy($file, 'public://', FILE_EXISTS_RENAME);
我不确定我需要在网站及其子文件夹中设置的其他权限。