J'essaie de unlink
une image dans CodeIgniter, mais la fonction unlink
indique:
notice Index non défini: fichier utilisateur
Voici mon code
<?php
function get_from_post(){
$data['logo_name'] = $this->input->post('logo_name',TRUE);
$data['logo_thumb'] = $_FILES['userfile']['name'];
return $data;
}
function deleteconf($data){
$data= $this->get_from_post();
$update_id=$this->uri->segment(3);
@unlink(base_url.'image/logo_thumb'.$logo_thumb);
$query= $this->_delete($update_id);
}
?>
la fonction unlink affiche un avis Index non défini:
userfile
Assurez-vous que vous utilisez l'attribut/la valeur enctype="multipart/form-data"
pour votre formulaire de téléchargement.
<form action="" method="post" accept-charset="utf-8" enctype="multipart/form-data">
De la MDN :
enctype
multipart/form-data
: Utilisez cette valeur si vous utilisez un élément<input>
avec l'attribut type défini sur "file".
Si vous utilisez CodeIgniter form helper , vous pouvez utiliser la fonction form_open_multipart()
:
Cette fonction est absolument identique à la balise
form_open()
ci-dessus Sauf qu’elle ajoute un attribut en plusieurs parties, ce qui est nécessaire si vous souhaitez utiliser le formulaire pour télécharger des fichiers.
PHP unlink()
function accepte le Path du fichier comme premier argument. Pas l'adresse URL.
La base_url()
helper function renvoie l'adresse URL du site, que vous avez définie dans le fichier config.php
.
Vous devrez utiliser le chemin du fichier sur votre serveur, comme suit:
unlink('/path/to/image/image_name.jpg'); // This is an absolute path to the file
Vous pouvez utiliser un chemin Absolute ou Relative, mais notez que le chemin relatifest relatif à le fichier index.php
. Si le dossier image/
est placé à côté du fichier index.php
, vous devez utiliser image/image_name.jpg
comme chemin du fichier:
unlink('image/image_name.jpg'); // This is a relative path to the file
base_url () renvoie l'url de votre projet, mais vous devez utiliser ici le chemin du répertoire du fichier que vous souhaitez supprimer.
$path = BASEPATH.'/assets/upload/employees/contracts/';
$get_file = $path.$con_id.'.jpg';
if(file_exists($get_file)){
unlink($get_file);
}
au lieu de unlink(base_url("/assets/upload/employees/contracts/'.$con_id."));
essayez ce code
unlink(base_url().'/image/logo_thumb'.$logo_thumb);
Remarque: vous n'avez pas assigné/déclaré $logo_thumb
dans votre deleteconf()
.
S'il vous plaît vérifier votre code.
Supposons que vous ayez le nom du fichier dans la base de données et que votre fichier est abc.jpg. Ensuite, pour dissocier cela dans Code Igniter, faites simplement -
$file = "abc.jpg";
$prev_file_path = "./assets/uploads/files/".$file;
if(file_exists($prev_file_path ))
unlink($prev_file_path );
Mon chemin de téléchargement de fichier est "public_html/assets/uploads/files /". J'écris le code ci-dessus dans mon contrôleur qui est "public_html/application/controllers/MyController.php". Donc, le chemin sera le même que celui que j'ai utilisé dans ma section de téléchargement de fichier CI. c'est à dire.
...
$config['upload_path'] = './assets/uploads/files';
...
Nous avons donc utilisé le chemin relatif dans les sections upload et unlink. Donc, si le téléchargement fonctionne parfaitement, cela fonctionnera également parfaitement.
La première fonction unlink fonctionne uniquement avec path (sans URL), donc veuillez supprimer la fonction base_url ().
Ensuite, dans votre première fonction $ _FILES array ne contient pas userfile index, c’est la raison pour laquelle obtenir une erreur.
NOTE: - Avant d'utiliser unlink, j'aimerais également utiliser la fonction file_exists (), tout d'abord, il va vérifier si le fichier existe déjà sur le même chemin, puis utiliser la fonction unlink (pour la gestion des erreurs).
Comme ça -
<?php
if(file_exists(filePath))
{
unlink(filePath);
}
?>
S'il vous plaît résoudre les deux problèmes.
Merci
Si vous souhaitez télécharger une photo pour le profil utilisateur ainsi que Au moment où l'ancienne photo de l'utilisateur doit être supprimée par À l'aide de la méthode unlink de codeignitor
$query = $this->db->where('profile_id',$profile_id)->get('users')->row();
$result = $query->photo;
$result = http://localhost/abc/user_photo/FE12563.jpg
if ($result) {
$dd = substr($result, strlen(base_url()));
unlink($dd);
return $this->db->set('photo',$photo)->where('profile_id',$profile_id)->update('users');
}
function get_from_post(){
$filename = $_POST['logo_name'];
$path = $_SERVER['DOCUMENT_ROOT'].'/projectname/uploads/'.$filename ;
if(is_file($path)){
unlink($path);
echo 'File '.$filename.' has been deleted';
} else {
echo 'Could not delete '.$filename.', file does not exist';
}
}
Commencez par vérifier le nom de votre fichier. Est-ce "userfile" ou non? Sinon ajoutez-le et exécutez-le à nouveau.