스프링 snsList 마무리.
<script>
$(function() {
$('#uploadBtn').click(function() {
regist();
});
function regist() {
const user_id = '${sessionScope.login.userId}';
let file = $('#file').val();
console.log(user_id);
console.log(file);
file = file.slice(file.indexOf('.') + 1).toLowerCase();
console.log(file);
if(file !== 'jpg' && file !== 'png' && file !== 'jpeg' && file !== 'bmp') {
alert('이미지 파일(jpg, png, jpeg, bmp)만 등록이 가능합니다.');
$('#file').val('');
return;
} else if(user_id === '') {
alert('로그인이 필요한 서비스입니다.');
return;
}
const formData = new FormData();
const data = $('#file');
console.log('폼 데이터: ' + formData);
console.log('data: ' + data);
console.log(data[0]);
console.log(data[0].files);
console.log(data[0].files[0]);
formData.append('file', data[0].files[0]);
const content = $('#content').val();
formData.append('content', content);
$.ajax({
url: '<c:url value="/snsBoard/upload" />',
type: 'post',
data: formData,
contentType: false,
processData: false,
success: function(result) {
if(result === 'success') {
$('#file').val('');
$('#content').val('');
$('.fileDiv').css('display', 'none');
getList(1, true);
} else {
alert('업로드에 실패했습니다. 관리자에게 문의해 주세요.');
}
},
error: function(request, status, error) {
console.log('code: ' + request + '\n' + 'message: ' + request.responseText + '\n' + 'error: ' + error);
alert('업로드에 실패했습니다. 관리자에게 문의해 주세요.');
}
});
}
let str = '';
let page = 1;
getList(1, true);
function getList(page, reset) {
if(reset === true) {
str = '';
}
$.getJSON(
'<c:url value="/snsBoard/getList?pageNum=' + page + '" />',
function(list) {
console.log(list);
for(let i=0; i<list.length; i++) {
str += "<div class='title-inner'>";
str += "<div class='profile'>";
str += "<img src='../resources/img/profile.png' >";
str += "</div>";
str += "<div class='title'>";
str += "<p>"+ list[i].writer +"</p>";
str += "<small>"+ timeStamp(list[i].regdate) +"</small> ";
str += "<a href='download?fileLoca=" + list[i].fileloca + "&fileName=" + list[i].filename + "'>이미지 다운로드</a>";
str += "</div>";
str += "<div class='content-inner'>"
str += "<p>"+ (list[i].content === null ? '' : list[i].content) +"</p>";
str += "</div>";
str += "<div class='image-inner'>";
str += "<a href='" + list[i].bno + "'>";
str += "<img src='display?fileLoca=" + list[i].fileloca + "&fileName=" + list[i].filename +"'>";
str += "</a>"
str += "</div>";
str += "<div class='like-inner'>";
str += "<img src='../resources/img/like.png'><span>522</span>";
str += "</div>";
str += "<div class='link-inner'>";
str += "<a href='##'><i class='glyphicon glyphicon-thumbs-up'></i>좋아요</a>";
str += "<a href='##'><i class='glyphicon glyphicon-comment'></i>댓글달기</a>";
str += "<a href='" + list[i].bno + "'><i class='glyphicon glyphicon-remove'></i>삭제하기</a>";
str += "</div>";
$('#contentDiv').html(str);
}
}
);
}
$('#contentDiv').on('click', '.image-inner a', function(e) {
e.preventDefault();
const bno = $(this).attr('href');
$.getJSON(
"<c:url value='/snsBoard/getDetail/' />" + bno,
function(data) {
console.log(data);
const img = 'display?fileLoca=' + data.fileloca + '&fileName=' + data.filename;
$('#snsImg').attr('src', img);
$('#snsWriter').html(data.writer);
$('#snsRegdate').html(timeStamp(data.regdate));
$('#snsContent').html(data.content);
$('#snsModal').modal('show');
}
);
});
$('#contentDiv').on('click', '.link-inner a', function(e) {
e.preventDefault();
const bno = $(this).attr('href');
$.ajax({
type: "post",
url: "<c:url value='/snsBoard/delete' />",
data: bno,
contentType: 'application/json',
success: function(result) {
if(result === 'noAuth') {
alert('권한이 없습니다.');
} else if(result === 'fail') {
alert('삭제에 실패했습니다. 관리자에게 문의하세요.');
} else {
alert('게시물이 정상적으로 삭제되었습니다.');
getList(1, true);
}
},
error: function() {
alert('삭제에 실패했습니다. 다시 시도하세요.');
}
});
});
$(window).scroll(function() {
if(Math.round($(window).scrollTop()) === $(document).height() - $(window).height()) {
getList(++page, false);
}
});
});
function timeStamp(millis) {
const date = new Date();
const gap = date.getTime() - millis;
let time;
if(gap < 60 * 60 * 24 * 1000) {
if(gap < 60 * 60 * 1000) {
time = '방금 전';
} else {
time = parseInt(gap / (1000 * 60 * 60)) + '시간 전';
}
} else {
const today = new Date(millis);
const year = today.getFullYear();
const month = today.getMonth() + 1;
const day = today.getDate();
const hour = today.getHours();
const minute = today.getMinutes();
time = year + '년 ' + month + '월 ' + day + '일 ' + hour + '시 ' + minute + '분';
}
return time;
}
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.readAsDataURL(input.files[0]);
$(".fileDiv").css("display", "block");
reader.onload = function(event) {
$('#fileImg').attr("src", event.target.result);
console.log(event.target)
}
}
}
$("#file").change(function() {
readURL(this);
});
</script>