Drupal 如何以编程方式删除用户配置文件图片?
我有以下代码(我在internet上找到的)以编程方式将配置文件图片上载到现有用户帐户。但是,我收到了“重复条目””错误 因此,我认为我应该先删除现有的照片(如果有的话),然后再上传新照片。或者有没有更好的方法可以在不出现以下错误的情况下进行覆盖 错误消息: DOException:SQLSTATE[23000]:完整性约束冲突:键“uri”的1062重复项“”:插入到{file_managed}(uid、uri、filemime、filesize、status、timestamp、type)值中(:db_insert_占位符0,:db_insert_占位符1,:db_insert_占位符2,:db_insert_占位符3,:db_insert_占位符4,:db_insert_占位符5,:db_insert_占位符6);数组([:db_insert_占位符0]=>1302[:db_insert_占位符1]=>drupal_write_record()中的[:db_insert_placeholder_4]=>1[:db_insert_placeholder_5]=>1414500789[:db_insert_placeholder_6]=>image](/home1/public_html/example/includes/common.inc的第7202行) 以下是我正在使用的代码:Drupal 如何以编程方式删除用户配置文件图片?,drupal,drupal-7,user-profile,Drupal,Drupal 7,User Profile,我有以下代码(我在internet上找到的)以编程方式将配置文件图片上载到现有用户帐户。但是,我收到了“重复条目””错误 因此,我认为我应该先删除现有的照片(如果有的话),然后再上传新照片。或者有没有更好的方法可以在不出现以下错误的情况下进行覆盖 错误消息: DOException:SQLSTATE[23000]:完整性约束冲突:键“uri”的1062重复项“”:插入到{file_managed}(uid、uri、filemime、filesize、status、timestamp、type)值
$obj_tochange = user_load($user);
$image_path ='http://www.example.com/sites/default/files/photo_gallery/newphoto.png';
$image_info = image_get_info($image_path);
// create file object
$file = new StdClass();
$file->uid = $obj_tochange->uid;
$file->uri = $image_path;
$file->filemime = $image_info['mime_type'];
$file->status = FILE_STATUS_PERMANENT;
$file->filesize = $image_info['file_size'];
file_save($file);
$edit['picture'] = $file;
user_save($obj_tochange, $edit);
在调用之前,您需要使用复制文件。如果文件与服务器上的任何其他文件匹配,它应该自动更改文件路径,因此不会引发此错误
$file = new StdClass();
// ..... your code as it is
$file = file_copy($file, 'public://', FILE_EXISTS_RENAME);
file_save($file);