package
com.study;
import
java.io.BufferedInputStream;
import
java.io.DataInputStream;
import
java.io.File;
import
java.io.FileInputStream;
import
java.io.IOException;
import
java.util.ArrayList;
import
javax.servlet.ServletContext;
import
javax.servlet.ServletException;
import
javax.servlet.ServletOutputStream;
import
javax.servlet.http.HttpServlet;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
org.apache.commons.fileupload.FileItem;
import
org.apache.commons.fileupload.disk.DiskFileItemFactory;
import
org.apache.commons.fileupload.servlet.ServletFileUpload;
public
class
FileUploadServlet
extends
HttpServlet {
public
void
doPost(HttpServletRequest _request,
HttpServletResponse _response)
throws
IOException, ServletException {
ServletContext context =
this
.getServletContext();
String realPath = context.getRealPath(
"/"
);
String dirName = realPath + File.separator +
"uploadFiles"
;
File dir =
new
File(dirName);
if
(!dir.exists()) dir.mkdir();
System.out.println(
"dirName: "
+ dirName);
File file =
null
;
try
{
DiskFileItemFactory dfif =
new
DiskFileItemFactory();
dfif.setSizeThreshold(
10
*
1024
);
dfif.setRepository(dir);
ServletFileUpload upload =
new
ServletFileUpload(dfif);
upload.setSizeMax(
10
*
1024
*
1024
);
upload.setHeaderEncoding(
"EUC-KR"
);
ArrayList items = (ArrayList) upload.parseRequest(_request);
for
(
int
i=
0
; i<items.size(); i++) {
FileItem item = (FileItem) items.get(i);
if
(item.getFieldName().equals(
"attachedFile"
)) {
file =
new
File(dir, item.getName());
item.write(file);
System.out.println(
"file saved in "
+ dir.getPath());
}
else
{
if
(item.getFieldName().equals(
"desc"
)) {
System.out.println(
"desc: "
+ item.getString());
}
}
}
}
catch
(Exception _ex) {
System.out.println(
"Error: "
+ _ex.getLocalizedMessage());
}
if
(file !=
null
) {
String fileName = file.getName();
String fileExt = fileName.substring(fileName.lastIndexOf(
"."
) +
1
);
String mimeType =
""
;
if
(fileExt.equalsIgnoreCase(
"jpg"
)) mimeType =
"image/jpeg"
;
else
if
(fileExt.equalsIgnoreCase(
"gif"
)) mimeType =
"image/gif"
;
else
if
(fileExt.equalsIgnoreCase(
"ppt"
)) mimeType =
"application/vnd.ms-powerpoint"
;
else
if
(fileExt.equalsIgnoreCase(
"xls"
)) mimeType =
"application/vnd.ms-excel"
;
else
{
mimeType =
"application/octet-stream"
;
_response.setHeader(
"Content-Disposition"
,
"attachment;filename="
+ fileName);
_response.setHeader(
"Content-Transper-Encoding"
,
"binary"
);
_response.setHeader(
"Pragma"
,
"no-cache"
);
}
_response.setContentType(mimeType);
FileInputStream fis =
new
FileInputStream(file);
BufferedInputStream bis =
new
BufferedInputStream(fis);
DataInputStream in =
new
DataInputStream(bis);
ServletOutputStream out = _response.getOutputStream();
byte
[] data =
new
byte
[
1024
];
while
(
true
) {
int
len = in.read(data,
0
, data.length);
if
(len <=
0
)
break
;
out.write(data,
0
, len);
out.flush();
}
in.close();
out.close();
}
}
}