Scenario: Instargram 에서 처럼 파일 업로드 메뉴이미지만 누르면 파일첨부 창이뜨고 내이미지를 첨부할려고했다
Solutions:(아래)
myprofile.jsp (html코드 생략)
- $(function() {
- //이미지 클릭시 업로드창 실행
- $('#profile_file_add').click(function() {
- console.log('fileadd');
- $("input[name='fileProfile']").click();
- })
- //업로드 파일체인지가 됬을경우 실행되는 이벤트 form태그에 fileProfile은 hidden으로 넣어줌
- $("input[name='fileProfile']").change(function(e){
- $( "#frm_profile_img" ).submit();
- $("input[name='fileProfile']").val();
- var frm = document.getElementById('profile_file_add');
- frm.method = 'POST';
- frm.enctype = 'multipart/form-data';
- var fileData = new FormData(frm);
- // ajax
- $.ajax({
- type:'POST',
- url:'/BoardProject/profileUpdate.ref',
- data:fileData,
- processData: false,
- contentType: false,
- success : function(data, textStatus, xhr) {
- console.log('success');
- },
- error : function(request,status,error) {
- alert("code:"+request.status+"\n"+"error:"+error);
- }
- });
- })
- })
service 영역.java
- public class ProfileUploadCommand implements BoardCommand {
- @Override
- public void execute(HttpServletRequest request, HttpServletResponse response) {
- DAO dao = new DAO();
- HttpSession session = request.getSession();
- String mid=(String)session.getAttribute("mid");
- String contents ="";
- String fileName = "";
- //String profimg = ""; //프로필 이미지
- //**************** File 추가부분****************//
- String pathname = "C:\\dev\\profile";
- File f = new File(pathname);
- if (!f.exists()) {
- // 폴더가 존재하지 않으면 폴더 생성
- f.mkdirs();
- }
- String encType = "UTF-8";
- int maxFilesize = 5 * 1024 * 1024;
- // MultipartRequest(request, 저장경로[, 최대허용크기, 인코딩케릭터셋, 동일한 파일명 보호 여부])
- try {
- MultipartRequest mr = new MultipartRequest(request, pathname, maxFilesize, encType, new DefaultFileRenamePolicy());
- fileName = mr.getFilesystemName("fileProfile");
- System.out.println("upload profile mid@@@@@@"+mid);
- System.out.println("upload profile filename@@@@@@"+fileName);
- } catch (IOException e) {
- e.printStackTrace();
- }
- dao.profileUpdate(mid, fileName);
- }
- }
-----------------------------------------------보너스---------------------------------------------------------
Scenario: db와의통신 없이 내가 첨부한 이미지를 미리보기 할 수 있는기능 추가
Solutions: 아래
파일첨부 폼.html
- <form action="write.ref" method="post" enctype="multipart/form-data">
- <input type="file" name="files">
- <div id="holder"></div>
- <textarea rows="5" cols="100" name="contents"></textarea><br>
- <input type="submit" value="글쓰기">
- </form>
- <script>
- $("input[name='profile_img']").change(function(e){
- e.preventDefault();
- var file = this.files[0];
- reader = new FileReader();
- reader.onload = function (event) {
- var img = new Image();
- img.src = event.target.result;
- if (img.width > 700 || img.height > 500) { // holder width
- img.width = 700;
- img.height = 500;
- }
- $('#holder').empty();
- $('#holder').append(img);
- };
- reader.readAsDataURL(file);
- return false;
- });
- </script>
- <!-- 2. DY가 짠 첨부파일 미리보기 소스-->
- <script>
- var upload = document.getElementsByTagName('input')[0],
- holder = document.getElementById('holder');
- upload.onchange = function (e) {
- e.preventDefault();
- var file = upload.files[0],
- reader = new FileReader();
- reader.onload = function (event) {
- var img = new Image();
- img.src = event.target.result;
- if (img.width > 700 || img.height > 500) { // holder width
- img.width = 700;
- img.height = 500;
- }
- holder.innerHTML = '';
- holder.appendChild(img);
- };
- reader.readAsDataURL(file);
- return false;
- };
- </script>
'To be Developer > WEB' 카테고리의 다른 글
[펌]이미지 업로드 후 view 할 때 (0) | 2017.03.29 |
---|---|
[Custom El funtion] 게시판 글내용이 엔터 인식이 안될때 (0) | 2017.03.28 |
[Jquery, Ajax] 로그인 기능을 Ajax로 만들어서 좋았던점 (0) | 2017.03.24 |
[AJAX, JSON] Servlet 에서 Ajax를 써서 동적으로 리플 불러오기 (0) | 2017.03.24 |
[Jquery] 동적으로 Iframe 간 반응하기, 로그인 연습 (0) | 2017.03.07 |