この Blueimp プラグインの Codeigniter フォークの 1 つにあるコードに従って、私自身の問題を解決しました。
問題は、Blueimp プラグインがデフォルトで指定する DELETE HTTP/AJAX リクエストの URL でした。これらの URL は、ファイルがアップロードされるディレクトリ パスに対応します。残念ながら、デフォルトでは、Codeigniter は URL を使用してこれをオーバーライドし、呼び出す controller/controller_method を決定します。
たとえば、アップロードされたファイルのディレクトリ構造は次のとおりです。
/uploads/img1.jpg
Codeigniter は呼び出されたコントローラーと呼び出されuploads
たメソッドを探しましたimg1.jpg
が、それらは明らかに存在しませんでした。
delete_url
各ファイルに割り当てられるBlueimp プラグイン「upload.class.php」ファイルを変更することで、これを解決しました 。次のdelete_url
ように、ディレクトリの場所から codeigniter controller/controller_method に変更されました。
protected function set_file_delete_url($file) {
$file->delete_url = base_url().'upload/deleteFile/'.rawurlencode($file->name);
//"upload/deleteFile is my controller/controller_method
//$file->delete_url = $this->options['upload_url']
// .'?file='.rawurlencode($file->name);*/
//.....
そして、ここに私の関数がどのように見えるかがあります( Codeigniter Blueimp Forkupload/deleteFile
のコードをほぼ逐語的にたどります):
function deleteFile($file){
$fcpath=FCPATH.'uploads/;
$success =unlink($fcpath.$file); //PHP function was does the actual file deletion
//info to see if it is doing what it is supposed to
$info->sucess =$success;
$info->file =is_file(FCPATH .$file);
$info->fcpath = FCPATH;
if (IS_AJAX) {
//I don't think it matters if this is set but good for error checking in the console/firebug
echo json_encode(array($info));
}
else {
//here you will need to decide what you want to show for a successful delete
$file_data['delete_data'] = $file;
$this->load->view('admin/delete_success', $file_data);
}
}