在多语言网站中,Drupal上传路径出现问题。 我已经制作了一种新语言,并且因为图像的源没有反斜杠,所以它不起作用。
我的功能使用以下代码。
variable_get('file_public_path', drupal_get_path('theme', $theme) . '/uploads').'/';
如果我使用以下内容,则可以。
'/' . variable_get('file_public_path', drupal_get_path('theme', $theme) . '/uploads').'/';
这是一种丑陋的解决方案,我敢打赌,有一些更优雅的方式可以解决这个问题。
答案 0 :(得分:1)
代码的替代方法是获取保存在公共路径中的图像的URL,如下所示。 (将“image.png”替换为正确的文件名。)
$image_url = file_create_url(variable_get('file_public_path', conf_path() . '/files') . '/image.png');
在您的代码中,您需要在开头使用斜杠,否则路径不会被视为相对于服务器文档目录。
假设您启用了意大利语作为Drupal站点的语言,页面的URL为http://example.com/it/page,图像保存在sites / default / files / image.png中。如果没有斜杠,图像URL将被视为从浏览器http://example.com/it/sites/default/files/image.png;使用斜杠,图像URL从浏览器被视为http://example.com/sites/default/files/image.png。
另请注意,“file_public_path”Drupal变量的默认值应为variable_get('file_public_path', conf_path() . '/files'
。这是system_file_system_settings()中使用的默认值。
$form['file_public_path'] = array(
'#type' => 'textfield',
'#title' => t('Public file system path'),
'#default_value' => variable_get('file_public_path', conf_path() . '/files'),
'#maxlength' => 255,
'#description' => t('A local file system path where public files will be stored. This directory must exist and be writable by Drupal. This directory must be relative to the Drupal installation directory and be accessible over the web.'),
'#after_build' => array('system_check_directory'),
);