Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 안드로이드 개발
- 안드로이드 개발 강좌
- 스카이 안드로이드폰 시리우스
- 하루 한마디 영어
- 스카이 안드로이드폰 시리우스 K양 동영상
- 아이폰 바탕화면
- SKY 시리우스
- 구글 안드로이드
- 안드로이드2.0개발
- 안드로이드 바탕화면
- sky 시리우스폰
- Form Stuff
- 안드로이드2.0
- 하루한마디영어
- 인기있는 블로그 만들기
- 구글안드로이드
- 안드로이드 2.0 개발
- 아이폰 배경화면
- 안드로이드개발
- 영어
- 안드로이드
- MapView
- 안드로이드 개발 2.0 강좌
- 안드로이드 배경화면
- 안드로이드 개발 2.0
- objective-c
- 구글 안드로이드 개발
- 스마트폰 배경화면
- 안드로이드폰
- android
Archives
- Today
- Total
moozi
12/17 register.jsp drag&drop 본문
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>
<%@include file="../includes/header.jsp" %>
<style>
.uploadResult{
width:100%;
height:100px;
background-color:gray;
}
.uploadResult ul{
display:flex;
flex-flow:row;
justify-content:center;
align-items: center;
}
.uploadResult ul li{
list-style:none;
padding:10px;
}
.uploadResult ul li img{
width:50px;
}
.bigPictureWrapper {
position: absolute;
display: none;
justify-content: center;
align-items: center;
top:0%;
width:100%;
height:100%;
background-color: gray;
z-index: 100;
}
.bigPicture {
position: relative;
display:flex;
justify-content: center;
align-items: center;
}
.bigPicture img{
width:600px;
}
.btn-circle{
width:25px !important;
height:25px !important;
line-height:0px !important;
}
.fa-times{
font-size:10px !important;
}
</style>
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">Board</h1>
</div>
<!-- /.col-lg-12 -->
</div>
<!-- /.row -->
<div class="row">
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-heading">
Register
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<form role="form" action="/board/register" method="post">
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
<div class="form-group">
<label>Title</label>
<input class="form-control" name="title">
</div>
<div class="form-group">
<label>Content</label>
<textarea class="form-control" name="content"></textarea>
</div>
<div class="form-group">
<label>Writer</label>
<input class="form-control" name="writer" value='<sec:authentication property="principal.username"/>' readonly>
</div>
<button type="submit" class="btn btn-default">Submit</button>
<button type="reset" class="btn btn-default">Reset</button>
</form>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
<!-- /.col-lg-12 -->
</div>
<!-- /.row -->
<!-- 첨부파일등록 ---------------------------------------------------------------------------->
<div class="row">
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-heading">
File Attach
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="form-group uploadDiv">
<input type="file" name="uploadFile" multiple>
</div>
<div class="uploadResult">
<ul>
</ul>
</div>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
<!-- /.col-lg-12 -->
</div>
<!-- /.row -->
<!-- 첨부파일등록 -->
<script>
$(document).ready(function(e){
var formObj=$("form[role='form']");
$("button[type='submit']").on("click",function(e){
//전송방지
e.preventDefault();
var str="";
$(".uploadResult ul li").each(function(i,obj){
var jobj=$(obj);
str+="<input type='hidden' name='attachList["+i+"].fileName' value='"+jobj.data("filename")+"'>";
str+="<input type='hidden' name='attachList["+i+"].uuid' value='"+jobj.data("uuid")+"'>";
str+="<input type='hidden' name='attachList["+i+"].uploadPath' value='"+jobj.data("path")+"'>";
str+="<input type='hidden' name='attachList["+i+"].fileType' value='"+jobj.data("type")+"'>";
});
formObj.append(str).submit();
});
//파일확장자체크 정규식
var regex=new RegExp("(.*?)\.(exe|sh|zip|alz|js|jar)$");
var maxSize=5242880; //5Mb
function checkExtension(fileName,fileSize){
if(fileSize>maxSize){
alert("파일 사이즈 초과");
return false;
}
if(regex.test(fileName)){
alert("해당종류의 파일은 업로드할 수 없습니다.");
return false;
}
return true;
}
//파일명 출력
var uploadResult=$(".uploadResult ul");
function showUploadedFile(uploadResultArr){
var str="";
$(uploadResultArr).each(function(i,obj){
//이미지가 아니면 attach.png 출력
if(obj.image){
//썸네일 full path
var fileCallPath=encodeURIComponent(obj.uploadPath+"/s_"+obj.uuid+"_"+obj.fileName);
str+="<li data-path='"+obj.uploadPath+"' 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+"' data-type='image' class='btn btn-warning btn-cricle'><i class='fa fa-times'></i></button><br>"
str+=" <img src='/display?fileName="+fileCallPath+"'>";
str+=" </div>"
str+="</li>";
}else{
var fileCallPath=encodeURIComponent(obj.uploadPath+"/"+obj.uuid+"_"+obj.fileName);
//원본이미지 path
var fileLink=fileCallPath.replace(new RegExp(/\\/g),"/"); // '\\'를 '/'로 변경
str+="<li data-path='"+obj.uploadPath+"' 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+"' data-type='file' class='btn btn-warning btn-circle'><i class='fa fa-times'></i></button><br>"
str+=" <img src='/resources/img/attach.png'></a>";
str+=" </div>";
str+="</li>";
}
});
uploadResult.append(str);
}
//첨부파일업로드
var csrfHeaderName="${_csrf.headerName}";
var csrfTokenValue="${_csrf.token}";
$("input[type='file']").change(function(e){
console.log("파일업로드");
//FormData객체 생성. form태그에 대응하는 객체
var formData=new FormData();
var inputFile=$("input[name='uploadFile']");
var files=inputFile[0].files;//선택한 파일들을 저장
for(var i=0;i<files.length;i++){
//파일확장자,size체크
if(!checkExtension(files[i].name,files[i].size)){
return; //중지
}
formData.append("uploadFile",files[i]);
}
$.ajax({
url: "/uploadAjaxAction",
processData: false, //QueryString(uploadAjaxAction?name=hkd)을 생성하지 않고
contentType: false, //multipart/form-data형식으로 보냄
beforeSend: function(xhr){
xhr.setRequestHeader(csrfHeaderName, csrfTokenValue);
},
data: formData, //formData전송
type: "POST",
dataType: "json",
success: function(result){
console.log(result);
showUploadedFile(result);//파일명출력
// inpu type='file' 초기화
//$(".uploadDiv").html(cloneObj.html());
}
});
});
//파일삭제처리.위임
$(".uploadResult").on("click","button", function(e){
var targetFile = $(this).data("file");
var type = $(this).data("type");
//부모태그중 가장 가까이 있는 li태그를 찾는다.
var targetLi=$(this).closest("li");
$.ajax({
url: '/deleteFile',
data: {fileName: targetFile, type:type},
dataType:'text',
beforeSend: function(xhr){
xhr.setRequestHeader(csrfHeaderName, csrfTokenValue);
},
type: 'POST',
success: function(result){
alert(result);
targetLi.remove();//li태그 삭제
}
});
});
//파일 드래그시 새창으로 열리는것 방지
$(".uploadResult").on("dragenter dragover",function(event){
//기본이벤트취소.새창이 열리는 것 방지
event.preventDefault();
});
//파일 드롭시 새창으로 열리는것 방지. 파일업로드
$(".uploadResult").on("drop",function(event){
//기본이벤트취소.새창이 열리는 것 방지
event.preventDefault();
//FormData객체 생성. form태그에 대응하는 객체
var formData=new FormData();
//drop했을 때 파일의 목록을 구함
var files=event.originalEvent.dataTransfer.files;
for(var i=0;i<files.length;i++){
var file=files[i];
console.log(file);
//파일확장자,size체크
if(!checkExtension(files[i].name,files[i].size)){
return; //중지
}
formData.append("uploadFile",files[i]);
}
$.ajax({
url: "/uploadAjaxAction",
processData: false, //QueryString(uploadAjaxAction?name=hkd)을 생성하지 않고
contentType: false, //multipart/form-data형식으로 보냄
beforeSend: function(xhr){
xhr.setRequestHeader(csrfHeaderName, csrfTokenValue);
},
data: formData, //formData전송
type: "POST",
dataType: "json",
success: function(result){
console.log(result);
showUploadedFile(result);//파일명출력
}
});
});
});
</script>
<%@include file="../includes/footer.jsp" %>
'TIS_2020 > 빅데이터2020_1기' 카테고리의 다른 글
전자정부프레임워크 oracle+mybatis (0) | 2020.12.17 |
---|---|
12/17 ex02.zip (0) | 2020.12.17 |
12/16 ex02.zip (0) | 2020.12.16 |
12/15 ex02.zip (0) | 2020.12.15 |
12/14 ex02.zip (0) | 2020.12.14 |
Comments