-неизвестно

 -Поиск по дневнику

Поиск сообщений в ATUM

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 17.02.2006
Записей:
Комментариев:
Написано: 1139


multipart form-data action Upload

Пятница, 06 Апреля 2012 г. 15:47 + в цитатник
<%@ 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.

ATUM   обратиться по имени Пятница, 06 Апреля 2012 г. 15:50 (ссылка)
http://www.linux.org.ru/forum/web-development/5805592


Если вдруг кому понадобится, то проблему решил так:

Задача:
У нас есть форма, в которую нужно добавить возможность заливки файлов.

Решение:
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.
Ответить С цитатой В цитатник
 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку