yeon
yeon I am a Korean web programmer with bboy dancing as a hobby. :)

jsp form data

jsp form data

jsp form data

ajax로 전송된 multipart/form-data에서 전송시 form data에 담아서 보낸 path 정보를 jsp에서 꺼낼 수 없냐는 문의가 있었다.
처음엔 request.getParameter로 지정한 키 값으로 데이터를 꺼내면 되지 않을까 생각 했지만 multipart/form-data 였던 것…
request.getParameter(“key”) 호출시 null 만 리턴된다.


MultipartRequest

Multipart Request 사용하여 getParameter로 지정하였던 데이터 가져오기로 해결


lib폴더에 cos.jar 추가후

1
2
<%@page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
<%@page import="com.oreilly.servlet.MultipartRequest"%>


1
2
MultipartRequest multipartRequest = new MultipartRequest(req, saveDir, maxSize, encType, new DefaultFileRenamePolicy());
let path = multipartRequest.getParameter("path");



MultipartParser

MultipartRequest를 사용할 경우 saveDir을 서버단에서 지정한 후 request에서 multipartRequest로 꺼내는 형태여서 request에 담겨있는 path정보를 사용하기에는 조금 무리가 있었다.

해서 Part별로 data 정보를 꺼내는 MultipartParser를 사용하는 방법사용

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
MultipartParser mutipartParser = new MultipartParser(request, saveDir);
Part part;
while ((part = mutipartParser.readNextPart()) != null) {
    String name = new String(part.getName().getBytes("8859_1"), "euc-kr");

    if (part.isParam()) {
        // 파일이 아닐때
        ParamPart paramPart = (ParamPart) part;
        String value = new String(paramPart.getStringValue().getBytes("8859_1"), "euc-kr");
        out.println("param; name=" + name + ", value=" + value);
    } else if (part.isFile()) {
        // 파일일때
        FilePart filePart = (FilePart) part;
        String fileName = filePart.getFileName();
        if ( fileName != null )
            fileName = new String(filePart.getFileName().getBytes("8859_1"),"euc-kr");
        if (fileName != null) {
            long size = filePart.write To(dir);
            out.println("file; name=" + name + "; filename=" + fileName +
            ", filePath=" + new String(filePart.getFilePath().getBytes("8859_1"),"euc-kr") +
            ", content type=" + filePart.getContentType() +
            ", size=" + size);
        } else {
            //  form type 이 file 이지만 비어있는 파라메터
            out.println("file; name=" + name + "; EMPTY");
        }
    }
}




comments powered by Disqus