gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 00:47:18 25 4
gpt4 key购买 nike

我找到了这个脚本 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 表中的一切似乎都是正确的,除了:

  1. 文件名字段为空
  2. uri 字段显示 public://avatars/upload/b8f1e69e83aa12cdd3d2babfbcd1fe27_4.gif
  3. 状态字段设置为 0(临时)

用户表中的图片字段会更新为上述条目的 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 7 以编程方式保存用户图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15297551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com