我有以下代码(我在互联网上找到)以编程方式将个人资料图片上传到现有用户帐户。然而,我正在" 重复录入"错误。
因此我认为我应该在上传新照片之前先删除现有照片(如果有的话)。或者是否有更好的覆盖方法而不会出现以下错误?
错误讯息:
DOException:SQLSTATE [23000]:完整性约束违规:1062重复条目' http://www.example.com/sites/default/files/photo_gallery' for key' uri':INSERT INTO {file_managed}(uid,uri,filemime,filesize,status,timestamp,type)VALUES(:db_insert_placeholder_0,:db_insert_placeholder_1,:db_insert_placeholder_2,:db_insert_placeholder_3,:db_insert_placeholder_4,:db_insert_placeholder_5 ,:db_insert_placeholder_6);数组([:db_insert_placeholder_0] => 1302 [:db_insert_placeholder_1] => http://www.example.com/sites/default/files/photo_gallery/newphoto.png [:db_insert_placeholder_2] => image / png [:db_insert_placeholder_3] => 143769 [:db_insert_placeholder_4] => 1 [: drupal_write_record()中的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);