728x90
반응형
SMALL
현재 나는 새로운 파일을 업로드 할때 마다 그에 맞는 이미지를 출력해야하는데
이전에 업로드했던 파일의 이미지가 그대로 올라가는 문제가 발생하였다.
파일 선택 버튼을 클릭하여 파일을 새로 갱신 할때 마다 이미지 또한 갱신해주는 식으로 변경해야된다.
파일 변경시마다 서버 업로드와 이미지 갱신하는 JS코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
$("input[type='file']").change(function(e){
var formData = new FormData();
var inputFile = $("input[name='uploadFile']");
var files = inputFile[0].files;
for(var i=0; i<files.length; i++){
//확인 메서드에서 false가 나오면 안됨
if(!checkExtension(files[i].name, files[i].size)){
return false;
}
//append:요소추가
formData.append("uploadFile",files[i]);
}
//ajax로 서버(uploadAjaxAction)에 전송
$.ajax({
url: '/uploadAjaxAction',
processData: false,
contentType: false,
//ajax로 csrf토큰 전송
beforeSend: function(xhr){
xhr.setRequestHeader(csrfHeaderName, csrfTokenValue);
},
data: formData,
type: 'POST',
dataType: 'json',
success: function(result){
console.log(result)
showUploadResult(result);
}
}); // End ajax
}); //End change
|
cs |
해당 코드 아래에 파일 이미지 갱신 코드를 추가하여 주자
$("input[type='file']").change(function(e){
//파일 변경 시마다 이미지도 갱신
if(this.files && this.files[0]){
var reader = new FileReader;
reader.onload = function(data){
$(".box img").attr("src", data.target.result).width(500);
}
reader.readAsDataURL(this.files[0]); }
자바스크립트에서 선택한 이미지를 동기방식으로 보여줘야되는 경우
FileReader 객체가 쓰인다고 한다.
파일 이미지를 화면에 보여주는 JS코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
function showUploadResult(uploadResultArr){
if(!uploadResultArr || uploadResultArr.length == 0){
return;
}
var uploadUL = $(".box");
var str ="";
$(uploadResultArr).each(function(i,obj){
if(obj.image){
var fileCallPath = encodeURIComponent( obj.uploadPath+ "/s_"+obj.uuid +"_"+obj.fileName);
str += "<li data-path='"+obj.uploadPath+"'";
str +=" data-uuid='"+obj.uuid+"' data-filename='"+obj.fileName+"' data-type='"+obj.image+"'"
str +" ><div>";
str += "<span> "+ obj.fileName+"</span>";
str += "<button type='button' data-file=\'"+fileCallPath+"\' " //button x표시
str += "data-type='image' class='btn btn-warning btn-circle'><i class='fa fa-times'></i></button><br>";
str += "<img src='/display?fileName="+fileCallPath+"'>";
str += "</div>";
str +"</li>";
}else if(!obj.image){
return false;
}
uploadUL.append(str);
});//End showUploadResult
}
|
cs |
기존은 파일의 주소와 같은 내용값만 변경해주었고 이미지에 대한 변경내용은 없었다.
이 때문에 파일 변경시 새로운 이미지가 아닌 이전 파일의 이미지가 계속 고정되있는 문제점이 발생했었다.
파일 갱신과 더불어 이미지의 갱신코드를 추가해줌으로써 문제가 해결되었다.
728x90
반응형
LIST
'Language > 자바스크립트' 카테고리의 다른 글
6. CheckBox 에 체크여부 확인 (0) | 2021.09.04 |
---|---|
5.[JS]자바스크립트 MAP,Array 사용법 (0) | 2021.08.19 |
3.[JS] 사용자와의 커뮤니케이션(alert,confirm,promt) (0) | 2021.03.17 |
2.[JS] 자바스크립트 선언위치 선정 (0) | 2021.03.15 |
1.[JS]메모리 절약을 위한 프로토타입 사용하기 (0) | 2021.03.03 |