2017년 9월 20일 수요일

이미지 등록하기


완성된 이미지 예제 보기
project - kanjiController - register_kanji / 받아오기 login / home.jsp



라이브러리 2개 먼저 받자


http://commons.apache.org/proper/commons-fileupload/download_fileupload.cgi







압축풀고 jar파일 라이브러리에 넣어주자






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
35
36
37
38
39
40
shop1 / admin.jsp

<form action="insertimg.do" method="post" enctype="multipart/form-data"> <div class="modal fade" id="insertItemImgModal"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> <h4 class="modal-title" id="myModalLabel">이미지추가</h4> </div> <div class="modal-body"> <input type="text" class="form-control" name="no" placeholder="물품번호" /> <input type="file" name="file1" class="form-control" /> <input type="file" name="file2" class="form-control" /> <input type="file" name="file3" class="form-control" /> <input type="file" name="file4" class="form-control" /> <input type="file" name="file5" class="form-control" /> </div> <div class="modal-footer"> <button type="submit" class="btn btn-primary">추가</button> <button type="button" class="btn btn-default" data-dismiss="modal">닫기</button> </div> </div> </div> </div> </form>


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        DiskFileItemFactory factory = new DiskFileItemFactory();        
        factory.setRepository(new File(System.getProperty("java.io.tmpdir")));
        
        ServletFileUpload upload = new ServletFileUpload(factory);
        upload.setFileSizeMax(1024*1024*10); //10Mbyte
        //저장 위치
        String root =request.getSession().getServletContext().getRealPath("/");
        System.out.println(root);
        try {
            List<FileItem> list = upload.parseRequest(request);
            
            if(list != null && list.size() >0) {
                
                for(FileItem tmp:list) {
                    if(!tmp.isFormField()) { //"file"일 경우
                    //파일명
                    String fileName = new File(tmp.getName()).getName();
                    
                    //파일 저장위치설정
                    File file = new File(root+File.separator+fileName);
                    
                    //파일저장
                    tmp.write(file);
                    }
                    else { //"file"이 아닐 경우
                        String value=tmp.getString();
                        System.out.println(value);
                    }
                }                
            }            
                
        } catch (Exception e) {
            
        }
    }
    
cs


선생님 블로그에서 가져온것

.라이브러리 다운로드 pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>mvc2</artifactId>
<name>mvc2</name>
<packaging>war</packaging>
<version>1.0.0-BUILD-SNAPSHOT</version>
<properties>
<java-version>1.7</java-version>
<org.springframework-version>4.2.2.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>

<dependencies>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>

<!--소스생략 -->
</dependencies>
</project>



2. webapp/WEB-INF/spring/appServlet/servlet-context.xml
<?xml version="1.0" encoding="UTF-8"?>
xsi:schemaLocation="

<!-- DispatcherServlet Context: defines this servlet's request-processing 
infrastructure -->

<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />

<resources mapping="/resources/**" location="/resources/" />

<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>

<context:component-scan base-package="com.example.mvc2" />

<!-- multipart -->
<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<beans:property name="maxUploadSize" value="1000000"/>
</beans:bean>
</beans:beans>



3. UploadController.java 파일 생성

package com.example.mvc2;

import java.util.Locale;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class UploadController {
private static final Logger logger = LoggerFactory.getLogger(UploadController.class);

@RequestMapping(value = "/upload", method = RequestMethod.GET)
public String upload() {
return "upload"; //upload.jsp표시
}

@RequestMapping(value = "/upload", method = RequestMethod.POST)
public @ResponseBody String upload1(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
//파일이 비어 있지 않다면
if(!file.isEmpty()){
try{
//파일명 저장
String filename = file.getName();

//현재 실행중인 서버의 root위치 
String root = request.
 System.out.println(filename);
  System.out.println(root);

   // root디렉토리/upload디렉토리 밑에 생성
File dir = new File(root + File.separator + "upload");

// 디렉토리가 없으면 디렉토리 생성함.
if (!dir.exists()) {
dir.mkdirs();
}

byte[] bytedata = file.getBytes();

File serverFile = new File(dir.getAbsolutePath() + File.separator + filename);
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(serverFile));
stream.write(bytedata);
stream.close();

   return "upload ok";
}
catch(Exception e){
 return "upload fail";
}
}
else{
return "upload fail";
}
}
}
======================= 비교해서 보기 ( 내가 만든거) =======================




@RequestMapping(value="/register_kanji",method=RequestMethod.POST)
public String register(
@RequestParam("name")String name,
@RequestParam("email")String email,
@RequestParam("image")MultipartFile img,
@RequestParam("pw")String pw,
HttpServletRequest request){
if(!img.isEmpty()) {
try {
filename =System.currentTimeMillis()+img.getOriginalFilename();//선생님예제에서는 getname()
String root = request.getSession().getServletContext().getRealPath("/");
System.out.println(filename);
System.out.println(root);
//이미지 저장하는 폴더 생성
File dir = new File(root + File.separator + "resources/images"); //이클립스에서 쓰는 폴더
if(!dir.exists()) {
dir.mkdirs();
}
byte[] bytedata = img.getBytes();
File serverFile = new File(dir.getAbsolutePath() + File.separator + filename);
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(serverFile));
stream.write(bytedata);
stream.close();
} catch (Exception e) {
return "upload fail";
}
}
Kanji_member km = new Kanji_member();
km.setImage(filename);
km.setEmail(email);
km.setName(name);
km.setPw(pw);
kDAO.registerMember(km);
System.out.println("입력성공");
return "redirect:home";
}

4. upload.jsp파일 생성
<%@ page pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<html>
<head>
<meta charset="utf-8" />
<title>이미지업로드</title>
<link href="resources/css/bootstrap.css" rel="stylesheet" />
</head>

<body>
<div class="container">
<form action="upload" enctype="multipart/form-data" method="post">
<input type="file" name="file" />
<input type="submit" value="업로드" />
</form>
</div>
</body>
</html>

-------------------------------------------------------------

1.라이브러리 다운로드 pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>mvc2</artifactId>
<name>mvc2</name>
<packaging>war</packaging>
<version>1.0.0-BUILD-SNAPSHOT</version>
<properties>
<java-version>1.7</java-version>
<org.springframework-version>4.2.2.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>

<dependencies>
<dependency> 
<groupId>servlets.com</groupId> 
<artifactId>cos</artifactId> 
<version>05Nov2002</version> 
</dependency>

<!--소스생략 -->
</dependencies>
</project>


2. UploadController.java 파일 생성
package com.example.mvc2;

import java.util.Locale;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class UploadController {
private static final Logger logger = LoggerFactory.getLogger(UploadController.class);

@RequestMapping(value = "/upload", method = RequestMethod.GET)
public String upload() {
return "upload"; //upload.jsp표시
}

@RequestMapping(value = "/upload1", method = RequestMethod.POST)
public @ResponseBody String upload2(HttpServletRequest request) { 
int maxSize = 1024*1024*10; //10M 
String root = request.getSession().getServletContext().getRealPath("/"); // root디렉토리/upload디렉토리 밑에 생성

File dir = new File(root + File.separator + "upload1"); // 디렉토리가 없으면 디렉토리 생성함. 
if (!dir.exists()) { 
   dir.mkdirs(); 

try{ //저장위치, 최대용략설정 
MultipartRequest multi 
  = new MultipartRequest(request, dir.getAbsolutePath(), maxSize, "UTF-8", new DefaultFileRenamePolicy()); 

String uploadFile = multi.getFilesystemName("file"); 
System.out.println(uploadFile); 
return "upload1 ok"; 
catch(Exception e){ 
   return "upload1 fail"; 
}
}
}


3. upload.jsp파일 생성
<%@ page pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<html>
<head>
<meta charset="utf-8" />
<title>이미지업로드</title>
<link href="resources/css/bootstrap.css" rel="stylesheet" />
</head>

<body>
<div class="container">
<form action="upload1" enctype="multipart/form-data" method="post">
<input type="file" name="file" />
<input type="submit" value="업로드" />
</form>
</div>
</body>



[출처] 이미지 업로드|작성자 ihongss

댓글 없음:

댓글 쓰기