multipart form-data action Upload |
<%@ page contentType="text/html; charset=windows-1251" %>
<html>
<head>
<title>
Upload_page
</title>
</head>
<body bgcolor="#c0c0c0">
<h1>
YO YO YO YO !!!!!!
</h1>
<form enctype="multipart/form-data" action="Upload_result.jsp" method='post'>
<table>
<tr>
<td>Выбрать файл:</td>
<td>
<input type='file' name="UPLOAD_FILE_FORM_NAME"/>
</td>
</tr>
<tr>
<td>
<input type='submit' value="Загрузить"/>
</td>
</tr>
</table>
</form>
</body>
</html>
* This source code was highlighted with Source Code Highlighter.<%@ page contentType="text/html; charset=windows-1251" %>
<%@page import = "java.net.*"%>
<%@page import = "java.util.*"%>
<%@page import = "javax.servlet.*"%>
<%@page import = "javax.servlet.http.*"%>
<%@page import = "java.io.*"%>
<%@page import = "org.apache.commons.fileupload.*"%>
<%@page import = "org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<html>
<head>
<title>
Upload_result
</title>
</head>
<body bgcolor="#c0c0c0">
<h1>
JBuilder Generated JSP
</h1>
<%
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (isMultipart) {
%> Мультіпарт <%
} else {
%> Не мультіпарт <%
}
try {
DiskFileUpload upload = new DiskFileUpload();
List items = upload.parseRequest(request);
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next(); %>
Файл для завантаження - <%=item.getName() %>
<%
//String FItemName = replace(item.getName());
String FItemName;
if (item.getName() == null) FItemName = null;
FItemName = item.getName();
int poz = -1;
while ((poz = FItemName.indexOf("\\")) != -1) {
FItemName = FItemName.substring(poz + 1);
}
while ((poz = FItemName.indexOf("/")) != -1) {
FItemName = FItemName.substring(poz + 1);
}
File tosave = new File(getServletContext().getRealPath("/"), FItemName);
item.write(tosave);
try {
URL ur = new URL("ftp://root:stalker@192.168.3.11/packages/" + FItemName);
URLConnection urlc = ur.openConnection();
//out.println("Connected");
BufferedInputStream in = new BufferedInputStream(new FileInputStream(tosave));
try {
BufferedOutputStream z = new BufferedOutputStream(urlc.getOutputStream());
try {
//out.println("Buffered");
int by;
while ( (by = in.read()) != -1) {
z.write(by);
}
} finally {
z.close();
}
} finally {
in.close();
}
} catch (Exception ex) {}
}
} catch (Exception ex){
%> ПОМИЛКА: <%= ex.getMessage() %>
<%
}
%>
</body>
</html>
* This source code was highlighted with Source Code Highlighter.
Если вдруг кому понадобится, то проблему решил так:
Задача:
У нас есть форма, в которую нужно добавить возможность заливки файлов.
Решение:
1. В форме:
<form method="POST"
action="some_action.jsp"
enctype="multipart/form-data">
где some_action.jsp - обработчик формы.
2. Качаем com.oreilly.servlet
3. Подключаем сервлет (в some_action.jsp):
import com.oreilly.servlet.MultipartRequest;
4. Далее, в обработчике формы (some_action.jsp):
// задаем путь, куда файлы будут копироваться
String temp_dir = "/home/kovrik/temp/";
// создаем MultipartRequest.
// аргументы:
// request - это HttpServletRequest
// temp_dir - куда файлы копируем
// 5*1024*1024 - максимальный размер файла
// "UTF-8" - кодировка
// для переименования заливаемых файлов можно добавить в качестве аргумента new com.myservlets.MyFileRenamePolicy(), где MyFileRenamePolicy() - реализация интерфейса FileRenamePolicy, в котором и происходит переименование файлов (но с этим пока не очень разобрался =) )
MultipartRequest multi = new MultipartRequest(request, temp_dir, 5*1024*1024, "UTF-8");
Всё, при обработке формы все файлы зальются в temp_dir
Но, т.к. мы добавили enctype="multipart/form-data" в форме, то остальные поля перестанут обрабатываться.
Допустим у нас было:
String name = request.getParameter("name");
Меняем request (HttpServletRequest) на multi (MultipartRequest):
String name = multi.getParameter("name");
Всё, теперь поле name будет обрабатываться как раньше. С остальными поступаем аналогично.
* This source code was highlighted with Source Code Highlighter.| Комментировать | « Пред. запись — К дневнику — След. запись » | Страницы: [1] [Новые] |