Получение файла на сервере из Веб-броузера

Модератор: Absurd

Ответить
Ganz
Сообщения: 5
Зарегистрирован: 16 июн 2005, 17:59

Привет всем.

Имеется следующий рабочий(как утверждает автор :) , хотя... работать-то он работает, только как-то не так как хотелось бы ) код на http://www.onjava.com/lpt/a/745

Так вот. С загрузкой txt файлов проблем нет(пока нет :) ), все интересное начинается когда закачиваешь, например, xls файл: размер с исходником одинаковый, но содержимое отображается некорректно, некоторые поля вообще пропадают. А doc вообще может не открыться .

1. При побайтовом сравнении обнаружил несоответствие по 10 адресам в закачаном файле.
2. Иногда получаю пустой файл, т.е. размер файла =0

Помогите разобраться.
Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

Проблема может быть в том что читаешь ты из Стрима, а пишешь в Райтер.
Это плохая практика.
Попробуй переделать все на Стрим или на Райтер.
В SAD - все в SAD.
Аватара пользователя
AiK
Сообщения: 2287
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

Даже самый дурацкий замысел можно воплотить мастерски
Ganz
Сообщения: 5
Зарегистрирован: 16 июн 2005, 17:59

ok пишу простой метод пост:

Код: Выделить всё

protected void doPost (HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException 
{
    MultipartRequest mr = new MultipartRequest(request, "c:/uploads");
}
по идее должен сработать, но получаю ошибку 500:

Код: Выделить всё

javax.servlet.ServletException: com/oreilly/servlet/MultipartRequest
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
	org.apache.jsp.jsp1_jsp._jspService(jsp1_jsp.java:61)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)


root cause 

java.lang.NoClassDefFoundError: com/oreilly/servlet/MultipartRequest
	SimpleBean.FileUploadBean.doUpload(FileUploadBean.java:25)
	org.apache.jsp.jsp1_jsp._jspService(jsp1_jsp.java:53)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
и где баг?
Ganz
Сообщения: 5
Зарегистрирован: 16 июн 2005, 17:59

Все ок. Спасибо. Я просто не прописал библиотеку в tomcat.
тема закрыта
Ganz
Сообщения: 5
Зарегистрирован: 16 июн 2005, 17:59

Прийдется еще раз вернуться.

Как мне прочитать имя закачиваемого файла (пусть даже это полный путь к нему)? Метод MultipartRequest.getParameter("filename") возвращает null, а другие поля формы считывает нормально :(

Попытался прочитать с помощью request.getParameter(...) - та же картина. Похоже что этот параметр куда-то исчезает: ведь файл-то закачивается.
artcore
Сообщения: 15
Зарегистрирован: 17 июн 2005, 13:21
Откуда: *.spb.ru

Код: Выделить всё

// 50 мегабайт - ограничение на аплуд
MultipartRequest mp = new MultipartRequest(request, dirName + "/", 50 * 1024 * 1024);

File file = mp.getFile("filename");
if (file == null) {
  throw new IOException("No file");
}
а у java.io.File есть все методы для работы с именем файла
Ganz
Сообщения: 5
Зарегистрирован: 16 июн 2005, 17:59

Благодарю.
Ответить