CodeIgniterで画像をunlink
しようとしましたが、unlink
関数は次のように表示します。
未定義のインデックス:userfileに注意してください
これが私のコードです
<?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);
}
?>
リンク解除関数は通知を表示します未定義のインデックス:
userfile
アップロードフォームに_enctype="multipart/form-data"
_属性/値を使用していることを確認してください。
_<form action="" method="post" accept-charset="utf-8" enctype="multipart/form-data">
_
[〜#〜] mdn [〜#〜] から:
enctype
_multipart/form-data
_:type属性が "file"に設定された_<input>
_要素を使用している場合は、この値を使用します。
CodeIgniter form helper を使用する場合は、form_open_multipart()
関数を使用できます。
この関数は、マルチパート属性を追加することを除いて、上記の
form_open()
タグとまったく同じです。これは、フォームを使用してファイルをアップロードする場合に必要です。
PHP unlink()
関数は、ファイルのPathを最初の引数として受け入れます。 URLアドレスではありません。
base_url()
ヘルパー関数 RLアドレスを返します サイトの 設定した _config.php
_ファイル。
次のように、サーバー上のファイルのパスを使用する必要があります。
_unlink('/path/to/image/image_name.jpg'); // This is an absolute path to the file
_
AbsoluteまたはRelativeパスを使用できますが、相対パスは_index.php
_ファイルからの相対パスです。つまり、_image/
_フォルダが_index.php
_ファイルの横にある場合は、ファイルパスとして_image/image_name.jpg
_を使用する必要があります。
_unlink('image/image_name.jpg'); // This is a relative path to the file
_
base_url()関数はプロジェクトのURLを返しますが、ここでは削除するファイルのディレクトリパスを使用する必要があります。
_$path = BASEPATH.'/assets/upload/employees/contracts/';
$get_file = $path.$con_id.'.jpg';
if(file_exists($get_file)){
unlink($get_file);
}
_
unlink(base_url("/assets/upload/employees/contracts/'.$con_id."));
の代わりに
このコードを試してください
_unlink(base_url().'/image/logo_thumb'.$logo_thumb);
_
注:deleteconf()
で_$logo_thumb
_を割り当て/宣言していません。
コードを確認してください。
データベースにファイル名があり、ファイルがabc.jpgであるとします。次に、CodeIgniterでリンクを解除するには-
$file = "abc.jpg";
$prev_file_path = "./assets/uploads/files/".$file;
if(file_exists($prev_file_path ))
unlink($prev_file_path );
私のファイルアップロードパスは「public_html/assets/uploads/files /」です。上記のコードをコントローラーで「public_html/application/controllers /MyController.php」と書いています。したがって、パスはCIファイルのアップロードセクションで使用したものと同じになります。つまり.
...
$config['upload_path'] = './assets/uploads/files';
...
そのため、アップロードセクションとリンク解除セクションの両方で相対パスを使用しました。したがって、アップロードが完全に機能する場合、これも完全に機能します。
最初のリンク解除関数はパス(URLなし)でのみ機能するため、base_url()関数を削除してください。
次に、最初の関数で$ _FILES配列にserfileインデックスが含まれていないため、エラーが発生します。
注:-unlinkを使用する前に、file_exists()関数も使用したいので、最初にファイルが同じパスに存在するかどうかを確認してから、unlink関数を使用します(エラー処理用) 。
そのように-
<?php
if(file_exists(filePath))
{
unlink(filePath);
}
?>
両方の問題を修正してください。
ありがとう
ユーザープロファイルの写真をアップロードする場合、およびその時点で、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';
}
}
まず、ファイルの入力名を確認してください。 「userfile」かどうか?そうでない場合は、それを追加してから、もう一度実行します。