@@ -10,35 +10,27 @@
addFilesObj ( event , mode , "fileList" ) ;
addFilesObj ( event , mode , "fileList" ) ;
}
}
function addFilesObj ( event , mode , objId , represntAt ){
function addFilesObj ( event , mode , objId ) {
if ( ! ( $ ( event . target ) . is ( '[multiple]' ) ) ) filesTempArr . splice ( 0 , filesTempArr . length ) ;
if ( ! ( $ ( event . target ) . is ( '[multiple]' ) ) ) filesTempArr . splice ( 0 , filesTempArr . length ) ;
var files = event . target . files ; //선택한 파일들
var files = event . target . files ;
var filesArr = Array . prototype . slice . call ( files ) ; //file객체 array추가
var filesArr = Array . prototype . slice . call ( files ) ; //file객체 array추가
var filesArrLen = filesArr . length ;
var filesArrLen = filesArr . length ;
var filesTempArrSize = filesTempArr . length * 1 ;
var filesTempArrSize = filesTempArr . length * 1 ;
let obj = $ ( '#' + objId ) ;
let obj = $ ( '#' + objId ) ;
if ( ( mode === 1 && filesArrLen > 1 ) || ( mode === 1 && obj . find ( 'li' ) . length > 0 ) ) {
if ( mode === 1 && obj . find ( 'li' ) . length > 0 ) {
alert ( "파일은 한개만 첨부할 수 있습니다." ) ;
alert ( "파일은 한개만 첨부할 수 있습니다." ) ;
return ;
return ;
}
}
var templist = '' ;
var templist = '' ;
for ( var i = 0 ; i < filesArrLen ; i ++ ) {
for ( var i = 0 ; i < filesArrLen ; i ++ ) {
if ( i === filesArrLen - 1 ) { //게시판 대표이미지 배열 첫번째로 이동
if ( represntAt === 'Y' ) {
filesTempArr . unshift ( filesArr [ i ] ) ; //임시배열에 저장
} else {
filesTempArr . push ( filesArr [ i ] ) ; //임시배열에 저장
filesTempArr . push ( filesArr [ i ] ) ; //임시배열에 저장
}
} else {
filesTempArr . push ( filesArr [ i ] ) ; //임시배열에 저장
}
if ( $ ( event . target ) . is ( '[multiple]' ) ) {
if ( $ ( event . target ) . is ( '[multiple]' ) ) {
//templist = "<div id='temp"+(i+filesTempArrSize)+"'><a href='#' onclick='downloadFile(this, "+(i+filesTempArrSize)+");'>"+ filesArr[i].name + "</a><span style='color:red;' onclick='deleteFile(this, event, "+(i+filesTempArrSize)+");'> [X]</span></div>";
//templist = "<div id='temp"+(i+filesTempArrSize)+"'><a href='#' onclick='downloadFile(this, "+(i+filesTempArrSize)+");'>"+ filesArr[i].name + "</a><span style='color:red;' onclick='deleteFile(this, event, "+(i+filesTempArrSize)+");'> [X]</span></div>";
let fileSize = ( filesArr [ i ] . size / 1024 ) . toFixed ( 2 ) ;
if ( objId == 'fileList' ) {
templist = "<li id='temp" + ( i + filesTempArrSize ) + "'>"
templist = "<li id='temp" + ( i + filesTempArrSize ) + "'>"
+ "<a href='#' onclick='downloadFile(this, " + ( i + filesTempArrSize ) + ");'>"
+ "<a href='#' onclick='downloadFile(this, " + ( i + filesTempArrSize ) + ");'>"
+ "<i class='icon icon_file-list mr-2'></i>"
+ "<i class='icon icon_file-list mr-2'></i>"
@@ -46,50 +38,16 @@
+ "</a>"
+ "</a>"
+ "<button type='button' class='file-list__delete' onclick='deleteFile(this,0,0, " + ( i + filesTempArrSize ) + ");'/>"
+ "<button type='button' class='file-list__delete' onclick='deleteFile(this,0,0, " + ( i + filesTempArrSize ) + ");'/>"
+ "</li>" ;
+ "</li>" ;
} else {
templist = "<li class = 'uploadList__item' id='temp" + ( i + filesTempArrSize ) + "'>"
+ "<p class = 'uploadList__itemText'>"
+ "<span class = 'uploadList__itemName'/> " + filesArr [ i ] . name + "</span>"
+ "<span class ='uploadList__itemSize'>(" + fileSize + " KB)</span>"
+ "</p>"
+ "<input type = 'hidden' value = '" + fileSize + "' class = 'filsSize'/>"
+ "<button class='uploadList__removeBtn' type='button' onclick='deleteFile(this,0,0," + ( i + filesTempArrSize ) + ",\"" + objId + "\"); fn_sum_file_size();'/>"
+ "<span class ='visually-hidden'>삭제</span>"
+ "</button>"
+ "</li>"
}
obj . append ( templist ) ;
obj . append ( templist ) ;
}
}
}
}
}
}
//드롭존 파일삭제(html 요소 조작 없이 단순 파일 삭제)
//파일삭제
function dropzoneDeleteFiles ( fileId , shopCd , menuGb , orderParam , callbackNm ) {
//callbackNm ajax 파일 처리 성공시 실행 할 콜백함수
function deleteFile ( obj , shopCd , menuGb , orderParam , callbackNm , callbackParam ) {
deleteFiles ( obj , shopCd , menuGb , orderParam , 'fileUpload' , callbackNm , callbackParam ) ;
}
//파일삭제
function deleteFiles ( obj , shopCd , menuGb , orderParam , objId , callbackNm , callbackParam ) {
filesTempArr . splice ( orderParam , 1 ) ;
var $div = $ ( obj ) . closest ( 'li' ) ;
var $id = $div . attr ( 'id' ) ;
var obj = "#" + objId ;
if ( $id . indexOf ( 'temp' ) == 0 ) { //임시등록파일은 화면에서 삭제
$div . remove ( ) ;
$ ( obj ) . val ( '' ) ;
} else { //업로드된 파일은 서버삭제
if ( confirm ( "파일을 삭제하시겠습니까?" ) ) {
ajaxFileDelete ( $div , $id , shopCd , menuGb , orderParam , callbackNm , callbackParam ) ;
}
}
}
//파일삭제(html 요소 조작 없이 단순 파일 삭제)
function dropzoneDeleteFiles ( fileId , shopCd , menuGb , orderParam , callbackNm , callbackParam ) {
if ( fileId . indexOf ( 'temp' ) != 0 ) { //임시등록파일은 화면에서 삭제
if ( fileId . indexOf ( 'temp' ) != 0 ) { //임시등록파일은 화면에서 삭제
if ( confirm ( "파일을 삭제하시겠습니까?" ) ) {
if ( confirm ( "파일을 삭제하시겠습니까?" ) ) {
ajaxFileDelete ( '' , fileId , shopCd , menuGb , orderParam , callbackNm , callbackParam );
ajaxFileDelete ( '' , fileId , shopCd , menuGb , orderParam , callbackNm ) ;
return "Y" ;
return "Y" ;
} else {
} else {
return "N" ;
return "N" ;
@@ -97,20 +55,36 @@
}
}
}
}
var ajaxFileDelete = function ( obj , fileId , shopCd , menuGb , orderParam , callbackNm , callbackParam ) {
//파일삭제
function deleteFile ( obj , shopCd , menuGb , orderParam ) {
deleteFiles ( obj , shopCd , menuGb , orderParam , '#fileUpload' ) ;
}
//파일삭제
function deleteFiles ( obj , shopCd , menuGb , orderParam , objNm ) {
filesTempArr . splice ( orderParam , 1 ) ;
var $div = $ ( obj ) . closest ( 'li' ) ;
var $id = $div . attr ( 'id' ) ;
if ( $id . indexOf ( 'temp' ) == 0 ) { //임시등록파일은 화면에서 삭제
$div . remove ( ) ; $ ( objNm ) . val ( '' ) ;
} else { //업로드된 파일은 서버삭제
if ( confirm ( "파일을 삭제하시겠습니까?" ) ) {
ajaxFileDelete ( $div , $id , shopCd , menuGb , orderParam ) ;
}
}
}
var ajaxFileDelete = function ( obj , fileId , shopCd , menuGb , orderParam ) {
$ . ajax ( {
$ . ajax ( {
// url: '/file/deleteUploadedFile/'+shopCd+'/'+menuGb+'/'+fileId+'/ajax',
// url: '/file/deleteUploadedFile/'+shopCd+'/'+menuGb+'/'+fileId+'/ajax',
url : '/file/deleteUploadedFile?sopCd=' + shopCd + '&menuGb=' + menuGb + '&fileKey=' + fileId ,
url : '/file/deleteUploadedFile?sopCd=' + shopCd + '&menuGb=' + menuGb + '&fileKey=' + fileId ,
data : fileId ,
data : { fileId : fileId } ,
type : 'get' ,
type : 'get' ,
success : function ( data ) {
success : function ( data ) {
if ( obj !== '' ) {
if ( obj !== '' ) {
obj . remove ( ) ;
obj . remove ( ) ;
}
}
if ( callbackNm != null ) {
callbackNm ( callbackParam ) ;
}
} ,
} ,
error : function ( ) {
error : function ( ) {
alert ( "삭제에 실패하였습니다." ) ;
alert ( "삭제에 실패하였습니다." ) ;
@@ -138,138 +112,15 @@
//다운로드
//다운로드
var linkDownloadFile = function ( key , shopCd , menuGb , orderParam ) { //파일글번호, 원본파일명
var linkDownloadFile = function ( key , fileName , shopCd , menuGb , orderParam ) { //파일글번호, 원본파일명
filesTempArr . splice ( orderParam , 1 ) ;
filesTempArr . splice ( orderParam , 1 ) ;
if ( key . indexOf ( 'temp' ) == 0 ) {
if ( key . indexOf ( 'temp' ) == 0 ) {
alert ( "등록된 파일만 다운로드 가능합니다." ) ;
alert ( "등록된 파일만 다운로드 가능합니다." ) ;
return false ;
return false ;
}
}
//$(location).attr('href','/file/download/'+shopCd+'/'+menuGb+'/'+key+'/ajax');
$ ( location ) . attr ( 'href' , '/file/fileDownload?sopCd=' + shopCd + '&menuGb=' + menuGb + '&fileKey=' + key ) ;
$ ( location ) . attr ( 'href' , '/file/fileDownload?sopCd=' + shopCd + '&menuGb=' + menuGb + '&fileKey=' + key ) ;
}
}
//-----------------------------------------------------------
// 이미지 업로드 시 이미지 미리보기 , 삭제버튼(배열에서 제거함) 기능
//-----------------------------------------------------------
// let selectedFiles = []; // 선택된 파일을 저장하는 배열
function addImgFilesView ( event , objId ) {
const previewContainer = document . getElementById ( objId ) ;
const files = event . target . files ; // 선택된 파일들 가져오기
// previewContainer.innerHTML = ''; // 기존 미리보기 초기화
// filesTempArr = []; // 기존 배열 초기화
// 파일 개수 제한 확인
// const maxFiles = 3; // 최대 파일 개수 제한
/*if (filesTempArr.length + files.length > maxFiles) {
alert(`최대 ${maxFiles}개의 파일만 업로드할 수 있습니다.`);
return;
}
Array.from(files).forEach((file) => {
if (filesTempArr.length < maxFiles) {
filesTempArr.push(file); // 파일 추가
displayPreview(file, previewContainer);
}
});*/
Array . from ( files ) . forEach ( ( file ) => {
filesTempArr . push ( file ) ; // 파일 추가
displayPreview ( file , previewContainer ) ;
} ) ;
// input 초기화 (같은 파일 재선택 가능)
event . target . value = '' ;
}
function displayPreview ( file , obj ) {
const reader = new FileReader ( ) ;
reader . onload = function ( e ) {
// 미리보기 항목 생성
const previewItem = document . createElement ( 'div' ) ;
previewItem . classList . add ( 'preview-item' ) ;
// 이미지 태그 생성
const img = document . createElement ( 'img' ) ;
img . src = e . target . result ;
// 삭제 버튼 생성
const deleteBtn = document . createElement ( 'button' ) ;
deleteBtn . classList . add ( 'delete-btn' ) ;
deleteBtn . textContent = '× ' ;
deleteBtn . onclick = function ( ) {
removeImgFile ( file , previewItem ) ;
} ;
// 미리보기 항목에 이미지와 버튼 추가
previewItem . appendChild ( img ) ;
previewItem . appendChild ( deleteBtn ) ;
obj . appendChild ( previewItem ) ;
} ;
reader . readAsDataURL ( file ) ;
}
function removeImgFile ( file , previewItem ) {
// 선택된 파일 배열에서 제거
filesTempArr = filesTempArr . filter ( ( f ) => f !== file ) ;
// 미리보기 항목 제거
previewItem . remove ( ) ;
}
//-------------------------------------------------------------------------------------------
var initFileList = function ( $files ) {
if ( Array . isArray ( $files ) ) {
$ . each ( $files , function ( index , item ) {
filesTempArr . push ( item ) ;
filesTempArr [ index ] . upload = 'disable' ;
} ) ;
} else {
filesTempArr . push ( new File ( [ $files ] , $files + ".txt" , {
type : "text/plain" ,
} ) ) ;
filesTempArr [ 0 ] . upload = 'disable' ;
}
}
//파일삭제(단건)
function deleteSingleFile ( obj , eventParam , orderParam ) {
if ( confirm ( '삭제하시겠습니까?' ) ) {
filesTempArr . splice ( orderParam , 1 ) ;
var $div = $ ( obj ) . closest ( 'div' )
var $id = $div . attr ( 'id' ) ;
if ( $id . indexOf ( 'temp' ) == 0 ) {
$div . remove ( ) ;
} else {
$div . remove ( ) ;
$ ( '#updateFileDiv' ) . show ( ) ;
filesTempArr = [ ] ;
$ ( '#imgSavedYn' ) . val ( "N" ) ;
//ajaxSingleFileDelete($id);
}
}
}
//파일삭제(단건) 후처리
var ajaxSingleFileDelete = function ( fileId ) {
$ . ajax ( {
url : '/bo/comm/file/deleteUploadedFile/' + fileId + "/ajax" ,
data : fileId ,
type : 'post' ,
success : function ( data ) {
//찾아보기 div구역 id = updateFileDiv
$ ( '#updateFileDiv' ) . show ( ) ;
filesTempArr = [ ] ;
} ,
error : function ( xhr , status , error ) {
alert ( "삭제에 실패하였습니다." ) ;
}
} ) ;
}