Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Drupal 如何以编程方式删除用户配置文件图片?_Drupal_Drupal 7_User Profile - Fatal编程技术网

Drupal 如何以编程方式删除用户配置文件图片?

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)值

我有以下代码(我在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行)

以下是我正在使用的代码:

$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);