Страница 1 из 1
Получение файла на сервере из Веб-броузера
Добавлено: 16 июн 2005, 18:08
Ganz
Привет всем.
Имеется следующий рабочий(как утверждает автор

, хотя... работать-то он работает, только как-то не так как хотелось бы ) код на
http://www.onjava.com/lpt/a/745
Так вот. С загрузкой txt файлов проблем нет(пока нет

), все интересное начинается когда закачиваешь, например, xls файл: размер с исходником одинаковый, но содержимое отображается некорректно, некоторые поля вообще пропадают. А doc вообще может не открыться .
1. При побайтовом сравнении обнаружил несоответствие по 10 адресам в закачаном файле.
2. Иногда получаю пустой файл, т.е. размер файла =0
Помогите разобраться.
Добавлено: 16 июн 2005, 18:37
Kolinus
Проблема может быть в том что читаешь ты из Стрима, а пишешь в Райтер.
Это плохая практика.
Попробуй переделать все на Стрим или на Райтер.
Добавлено: 16 июн 2005, 18:53
AiK
Добавлено: 16 июн 2005, 19:56
Ganz
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)
и где баг?
Добавлено: 17 июн 2005, 10:08
Ganz
Все ок. Спасибо. Я просто не прописал библиотеку в tomcat.
тема закрыта
Добавлено: 17 июн 2005, 13:12
Ganz
Прийдется еще раз вернуться.
Как мне прочитать имя закачиваемого файла (пусть даже это полный путь к нему)? Метод MultipartRequest.getParameter("filename") возвращает null, а другие поля формы считывает нормально
Попытался прочитать с помощью request.getParameter(...) - та же картина. Похоже что этот параметр куда-то исчезает: ведь файл-то закачивается.
Добавлено: 17 июн 2005, 13:42
artcore
Код: Выделить всё
// 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 есть все методы для работы с именем файла
Добавлено: 17 июн 2005, 14:07
Ganz
Благодарю.