반응형
1. processData=false
processData값이 true일 때에는 파일 업로드가 안됩니다. jquery ajax는 기본값이 processData true이기 때문에 false로 변경합니다.
2. contentType=false
기본값은 true이며 기본값으로는 전송이 안되기 때문에 false로 변경합니다.
<form id="frm" name="frm" method="post" >
<div class="row justify-content-center">
<div class="col-8 mb-3">
<div class="row ">
<div class="mb-3">
<label for="formFile" class="form-label">파일 업로드</label>
<input class="form-control" type="file" id="board_file" name="board_file" >
</div>
<div class="col-12 mb-3">
<button type="button" id="btn_save" class="btn btn-primary">글작성</button>
</div>
</div>
</div>
</div>
</form>
<script>
$("#btn_save").on("click", function () {
var form_data = new FormData();
form_data.append('board_file', $('#board_file')[0].files[0] );
$.ajax({
type : "POST",
url : "<?=base_url("board/save")?>",
dataType : 'json',
cache : false,
contentType : false,
processData : false,
data : form_data,
success : function( res ){
if( res.state == 'success' )
{
alert("적용 완료하였습니다.");
location.reload();
}
},
error : function(XMLHttpRequest, textStatus, errorThrown){
alert("error")
}
});
});
</script>
3. 컨트롤러 선언에 File 개체 선언
컨트롤러 선언부에 use CodeIgniter\Files\File; 선언합니다.
<?php
namespace App\Controllers;
use App\Controllers\BaseController;
use App\Models\BoardModel;
use CodeIgniter\Files\File;
class Board extends BaseController
{
public function __construct()
{
}
public function index()
{
}
public function save( int $ss_board_id = null )
{
//파일업로드
$img = $this->request->getFile('board_file');
$filepath = WRITEPATH."uploads/".$img->store();
$data = ['uploaded_flleinfo' => new File($filepath)];
echo json_encode(array(
'state' => 'success',
'msg' => 'ok'
));
}
}
getFile 메소드로 request한 정보를 받아서 $img 변수로 선언합니다. store(); 메소드로 저장할 파일명을 만들고,
File개체를 이용하여 지정된 폴더에 저장을합니다.
참고링크 : http://ci4doc.cikorea.net/libraries/uploaded_files.html
반응형
'소프트웨어 개발 > PHP' 카테고리의 다른 글
[코드이그나이터4] 필터(Filters) 사용법 (0) | 2022.02.14 |
---|---|
[코드이그나이터4] 세션(session) 사용법 ci4 session (0) | 2022.02.14 |
[코드이그나이터4] 직전 URL 구하기 referer url, 접속 에이전트 구하기, 모바일 여부 체크, 에이전트 정보 구하기 (0) | 2022.02.13 |
[코드이그나이터4] mariadb/mysql insert_id 가져오기 (0) | 2022.02.13 |
[코드이그나이터4] 커스텀 검증(Validation) 모듈 만들기 (0) | 2022.02.13 |
댓글