编程语言
首页 > 编程语言> > php – Drupal 7以编程方式保存用户图片

php – Drupal 7以编程方式保存用户图片

作者:互联网

我找到了这个脚本http://d.danylevskyi.com/node/7,我用它作为下面代码的启动器.

目标是能够保存用户图片:

<?php
define('DRUPAL_ROOT', getcwd());

require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

$uid = 99;
$account = user_load($uid);

// get image information
$image_path = 'public://avatars/upload/b8f1e69e83aa12cdd3d2babfbcd1fe27_4.gif';
$image_info = image_get_info($image_path);

// create file object
$file = new StdClass();
$file->uid = $uid;
$file->uri = $image_path;
$file->filemime = $image_info['mime_type'];
$file->status = 0; // Yes! Set status to 0 in order to save temporary file.
$file->filesize = $image_info['file_size'];

// standard Drupal validators for user pictures
$validators = array(
    'file_validate_is_image' => array(),
    'file_validate_image_resolution' => array(variable_get('user_picture_dimensions', '85x85')),
    'file_validate_size' => array(variable_get('user_picture_file_size', '30') * 1024),
);

// here all the magic :) 
$errors = file_validate($file, $validators);
if (empty($errors)) {

    file_save($file);
    $edit['picture'] = $file;
    user_save($account, $edit);
}
?>

在sites / default / files / pictures /中创建一张图片,名称为picture-99-1362753611.gif

在file_managed表中,一切似乎都是正确的,除了:

>文件名字段为空
> uri字段显示公开://avatars/upload/b8f1e69e83aa12cdd3d2babfbcd1fe27_4.gif
> status字段设置为0(临时)

users表中的picture字段使用上述条目的fid进行更新.

我猜想file_managed表应该存储最终文件(在sites / default / pictures中)而不是原始文件信息,而users表也应该链接到那个.

知道如何实现这一目标吗?我是Drupal API的新手.谢谢.

编辑:

我知道我将原始文件提供给file_save和user_save函数.但是哪一个实际上在sites / default / pictures /中创建了文件?

解决方法:

尝试在代码中添加以下内容:

$file->filename = drupal_basename($image_path);
$file->status   = FILE_STATUS_PERMANENT;
$file = file_save($file);  // Use this instead of your current file_save

这有帮助吗?

——————编辑——————

如果要将文件的副本保存在新位置,可以将上面的第三行替换为类似的内容

// Save the file to the root of the files directory.
  $file = file_copy($file, 'public://');

标签:php,drupal,drupal-7
来源: https://codeday.me/bug/20190901/1781146.html