Надо организовать временную ссылку на файл на сервере для скачивания. Проблема в том что когда просто в тупую закидываю файл Upload на сервер ссылка на не не пашет и выдаёт ошибку. Если даже в ручную создать опубликованную директорию на сервере то через NetBeans то файлы будут доступны всё время и к тому же новые загружены файлы не будут проиндексированы(не получают ссылок на себя). Как то же решают эти проблемы?
11 февраля 2009 в 1:03
(^-^)
11 февраля 2009 в 1:02
Читай больше документации и книг. И исправься в выражении своих мыслей в письменном виде.
Потратили уйму на тебя времени, чтобы понять, что ты там накалякал=)
11 февраля 2009 в 1:02
Ещё раз спасибо=) Я вообще Java не моё… это в универе я её изучаю. Я системный программист, там я более осведомлённый))))
11 февраля 2009 в 1:02
Удачи на защите=)
Больше не могу – спать хочу…
11 февраля 2009 в 1:01
>та вы вообще не там копаете!
туда туда…
>ссылка правильная… и всё пашет.
Про ссылку я ничего и не говорил – Ссылка правильная…
>только новые загруденные файлы не
>пашут! если перезагрузить проект то опять всё станет на свои места, >если конечно просмотреть каталог через NetBeans ещё раз. А так тоже >самое((((((
Вот именно… после передеплоя он подложит файлы из проекта, которые ты туда залил, в папку где храняться задеплоенные приложение.
Прочитай про процесс компиляции, сборки, деплоя j2ee приложений. И как это реализовано в Net Beans.
11 февраля 2009 в 1:01
Что значит зачем? Сам же написал – рекурсивного обхода каталогов!!!!
11 февраля 2009 в 1:01
Йолки палки! Как я не догнал это! Спасибо!!! Ты мне глаза открыл!!! А болбес далбаюсь с этим)))))))
11 февраля 2009 в 1:01
Сессия прошла, а ты всё курсовую доделаешь?
11 февраля 2009 в 1:01
Та вот это фигня осталась и всё! А препод завалил всех в Универе со своими постоянно изменяющиемеся требованиями… вот так бывает в жизни.
11 февраля 2009 в 1:00
та вы вообще не там копаете! ссылка правильная… и всё пашет. только новые загруденные файлы не пашут! если перезагрузить проект то опять всё станет на свои места, если конечно просмотреть каталог через NetBeans ещё раз. А так тоже самое((((((
11 февраля 2009 в 1:00
и никакой я у Вас рекурсии там и не вижу этой папки!! Где рекурсия??
11 февраля 2009 в 1:00
зачем? в папке кроме изображение не чего не должно быть! а первый вход для для обхода пользовательских папок. это здесь не причём.
11 февраля 2009 в 0:05
>Я знаю что сам GlassFish индексирует файлы в каталоге
Можно узнать откуда Вы это узнали?
11 февраля 2009 в 0:05
Ну чкстно говоря это не временная дериктория а постоянная, да и файлы в ней остаються на всегда… НЕ понимаю к чему вы ведёте?
11 февраля 2009 в 0:05
Я просто указал что папка видна для публичного просмотра и всё что в ней и файлы сразу стали доступны для публичного просмотра в ней. – это и был процес индексации… но новые файлы которые загрузились динамически а не копирование мышкой – не отображаются((( Про индексирование я узнал от своего препода!
11 февраля 2009 в 0:05
блин….
вы, наверняка, генерируете вот такую вот ссылку на Вашу картинку:
<img src="/images/upload_file.gif"/>
только вот эта папка /images/ во время runtime нихера не соответствует вот этой:
C:/Documents and Settings/lyoha/Мои документы/NetBeansProjects/Kursach/Kursach-war/web/images/
11 февраля 2009 в 0:04
меня терзают смутные сомнения:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
} finally {
out.close();
}
}
11 февраля 2009 в 0:04
=) тут такого много=)
11 февраля 2009 в 0:04
это курсовой проект)))) всего одна ерунда осталась… и не знаю кто может посоветовать как её решить.
11 февраля 2009 в 0:04
….
Сразу оговарюсь и скажу, что за Вас это делает MultipartRequest. Вы ему прописали в конструкторе путь к ВРЕМЕННОМУ хранению загруженных файлов, который парсит http запрос и сохраняет в эту папку найденные в запросе файлы. И дальше Вы с этими файлами ничего не делаете…. Что Вы хотели от этого?
С чего Вы взяли, что вот эта папка "C:/Documents and Settings/lyoha/РњРѕРё документы/NetBeansProjects/Kursach/Kursach-war/web/images/" соответствует папке "images" задеплоенному на GlassFish?
1ых, нельзя пользоваться абсолютными путями. Можно,но это принесйт Вам кучу проблем, с одной из которых Вы только что столкнулись
2ых, папка ваша, куда MultipartRequest сохраняет загруженные ваши файлы соответствует исходникам вашего проекта, а не папке куда деплоится ваше приложение.
11 февраля 2009 в 0:04
в этом коде я уверен на все 100% что пашет!
Я знаю что сам GlassFish индексирует файлы в каталоге для того что б опубликовать на них ссылки. Это делаеться автоматически когда через NetBeans просматриваю ту папку. Но мне нужно это делать динамически когда принимаю их через сервлет. Должны быть какие то функции или API от GlassFish. Есть документация по нему на официальном сайте но проитать её не реально для меня((((
11 февраля 2009 в 0:04
>Щас кинут рабочий…
По-моему это не Вы писали…. Может для начало Вам надо в нём разобраться?
11 февраля 2009 в 0:03
два вопроса:
1. сервлет, строящий список файлов, находит новые файлы?
2. HTTP GET что-нибудь получает по адресу свежезагруженного файла?
11 февраля 2009 в 0:03
1. Зачем так?
String name = (String)en.nextElement();
File h2 = mpr.getFile(name);
File h = mpr.getFile("file_up");
А так что не подойдет:
String name = (String)en.nextElement();
File h2 = mpr.getFile(name);
2. Что-то не нашел строчки кода где бы Вы сохраняли загруженнЫЕ файлы в определенной папке……..
Сразу оговарюсь и скажу, что за Вас это делает MultipartRequest. Вы ему прописали в конструкторе путь к ВРЕМЕННОМУ хранению загруженных файлов, который парсит http запрос и сохраняет в эту папку найденные в запросе файлы. И дальше Вы с этими файлами ничего не делаете…. Что Вы хотели от этого?
С чего Вы взяли, что вот эта папка "C:/Documents and Settings/lyoha/РњРѕРё документы/NetBeansProjects/Kursach/Kursach-war/web/images/" соответствует папке "images" задеплоенному на GlassFish?
11 февраля 2009 в 0:03
Ой я извеняюсь… я старый проект выписал(((((
Щас кинут рабочий…
11 февраля 2009 в 0:03
Вот код сервлета который принимает файл:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import com.oreilly.servlet.*;
/**
*
* @author lyoha
*/
public class Upload extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
} finally {
out.close();
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
UserAdmin user = new UserAdmin(request.getCookies(), response);
user.inLogin("sa", "sa");
if(user.CheckUser()>0)
{
MultipartRequest mpr = new MultipartRequest(request, "C:/Documents and Settings/lyoha/Мои документы/NetBeansProjects/Kursach/Kursach-war/web/images/"+user.login_us, 1024*5*1024);
Enumeration en = mpr.getFileNames();
while(en.hasMoreElements())
{
String name = (String)en.nextElement();
File h2 = mpr.getFile(name);
File h = mpr.getFile("file_up");
}
response.sendRedirect("MainServlet");
}
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
11 февраля 2009 в 0:03
Вот код формы отправителя, вернее код метода сервлета который это делает:
void UploadFile(PrintWriter out)
{
out.print("<form method='POST' enctype='multipart/form-data' action='Upload'><table border='1'><tr><td>");
out.print("Upload file:<br><input type='file' name='file_up'><br><input type='submit' name='sender'>");
out.print("</td></tr></table></form>");
}
11 февраля 2009 в 0:03
А метод поиска файла:
int SearchFiles(PrintWriter out, String name, int point)
{
int count=0;
File file = new File("C:/Documents and Settings/lyoha/Мои документы/NetBeansProjects/Kursach/Kursach-war/web/images");
File files[];
File files2[];
try
{
if(file.isDirectory())
{
files = file.listFiles();
for(int i=0;i<files.length;i++)
{
if(files[i].isDirectory())
{
files2 = files[i].listFiles();
for(int j=0;j<files2.length;j++)
{
if(files2[j].getName().indexOf(name)!=-1)
{
if(point*10-count>=0 && point*10-count<10)
{
out.print("<table border=1>");
out.print("<tr><td><img src='"+"images/"+files[i].getName()+"/"+files2[j].getName()+"'></td></tr><tr><td>"+files2[j].getName()+"</td></tr><tr><td>Автор:"+files[i].getName()+"</td></tr>");
out.print("</table><br><br>");
}
count++;
}
}
}
}
if(count>=10)
for(int h=1;h<=(count/10)+1;h++)
if(h!=point)
out.print("<a href='MainServlet?search=search&file_search="+name+"¶m1="+h+"'> -"+h+ "- </a> ");
else
out.print("<font color='black'> -"+h+ "- </font> ");
}
out.print("<br><br><font color='red' size='3'>Найдено файлов: "+count+".</font>");
}
catch(Exception e)
{
}
return count;
}
П.С.: не обращайте внимание на Кириллицу, она у меня в норме))))
11 февраля 2009 в 0:01
Это код формы что загружает файл:
<form method='POST' enctype='multipart/form-data' action='Upload'>
<table border='1'>
<tr><td>
Upload file:<br><input type='file' name='file_up'>
<br>
<input type='submit' name='sender'>
</td></tr>
</table>
</form>
Это код сервлет который принимает файл:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import com.oreilly.servlet.*;
/**
*
* @author lyoha
*/
public class Upload extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
} finally {
out.close();
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
UserAdmin user = new UserAdmin(request.getCookies(), response);
user.inLogin("sa", "sa");
if(user.CheckUser()>0)
{
MultipartRequest mpr = new MultipartRequest(request, "C:/Documents and Settings/lyoha/Мои документы/NetBeansProjects/Kursach/Kursach-war/web/images/"+user.login_us, 1024*5*1024);
Enumeration en = mpr.getFileNames();
while(en.hasMoreElements())
{
String name = (String)en.nextElement();
File h2 = mpr.getFile(name);
File h = mpr.getFile("file_up");
}
}
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
11 февраля 2009 в 0:01
это метод сервлета который ищит файл на диске:
int SearchFiles(PrintWriter out, String name, int point)
{
int count=0;
File file = new File("C:/Documents and Settings/lyoha/Мои документы/NetBeansProjects/EnterpriseApplication1/EnterpriseApplication1-war/web/images");
File files[];
File files2[];
try
{
if(file.isDirectory())
{
files = file.listFiles();
for(int i=0;i<files.length;i++)
{
if(!files[i].isDirectory())
{
if(files[i].getName().indexOf(name)>-1)
{
if(point*10-count>=0 && point*10-count<10)
{
out.print("<table border=1>");
out.print("<tr><td><img src='"+"images/"+files[i].getName()+"'></td></tr><tr><td>"+files[i].getName()+"</td></tr><tr><td><font color='green'>Автор: root</font></td></tr>");
out.print("</table><br><br>");
}
count++;
/**/}
}
else
{
files2 = files[i].listFiles();
for(int j=0;j<files2.length;j++)
{
if(files2[j].getName().indexOf(name)!=-1)
{
if(point*10-count>=0 && point*10-count<10)
{
out.print("<table border=1>");
out.print("<tr><td><img src='"+"images/"+files[i].getName()+"/"+files2[j].getName()+"'></td></tr><tr><td>"+files2[j].getName()+"</td></tr><tr><td>Автор:"+files[i].getName()+"</td></tr>");
out.print("</table><br><br>");
}
count++;
}
}
}
}
if(count>=10)
for(int h=1;h<=(count/10)+1;h++)
if(h!=point)
out.print("<a href='MainServlet?search=search&file_search="+name+"¶m1="+h+"'> -"+h+ "- </a> ");
else
out.print("<font color='black'> -"+h+ "- </font> ");
}
out.print("<br><br><font color='red' size='3'>Найдено файлов: "+count+".</font>");
}
catch(Exception e)
{
}
return count;
}
Кирилица на самом деле в порядке, не оброщайте внимание на "зюзюки"))))
10 февраля 2009 в 23:05
после долгого анализа текста…
В догонку к первому:
Распишите структуру каталогов вашего проекта!
Где располагется папка куда вы изначально кладете файлы перед сборкой проекта? ("если закидываю файл просто на сервер")
Покажите в структуре где располагется папка в которую смотрит сервлет?
("сервлет который даёт ссылки на флы на сервере")
Покажите код сервлета в котором происходит обращение к данной папке.
Где располагается папка куда загружаются (upload) файлы?
Покажите код образования ссылки на файлы вашего сервлета! (даёт так же ссылку на новый файл но она не пашет)
10 февраля 2009 в 23:04
да дело на самом деле обстаит так:
все файлы которые я забрасываю – картинки.
есть Сервлет обрабатывает принятый файл – он сохраняет его на жёсткий диск в директорию с файлами. Сама дериктория опубликована для просмотра!
есть сервлет который его отправляет.
они работают корректно.
есть ещё сервлет который по результам запроса отображает список и сами картинки. поиск удаёться – выводит полный список всех файлов на сервере но изображение загруженного файла не получаю. подозреваю что GlassFish просто не даёт ссылку на него. как только я останавливаю работу проэкта – и начинаю рыться в папке с изображениями через NetBeans так сразу нахожу его.
Запускаю по новой Deploy Project, затем Run… и на сайте есть уже все картинки! Вот зараза))))
Надо что б оно сразу его индексировала для доступа из вне.
10 февраля 2009 в 23:03
присоединяюсь к Леонид maxleo Максимов – ничего не понятно, что Вы говорите. Какой то набор слов, несвязанных высказываний в перемешку со словами upload, сервер, ссылка, ошибка, netbeans. А да… ещё и Java =)
если не можете описывать ошибку, так ЗАЧЕМ других мучаете – ОПУБЛИКУЙТЕ ЕЁ ЗДЕСЬ! Не можете описать компонент – ОПУБЛИКУЙТЕ ОСНОВНУЮ ЧАСТЬ ИСХОДНОГО КОДА ЗДЕСЬ!
10 февраля 2009 в 21:01
> если закидываю файл просто на сервер.
не понятно. кто закидывает? как закидывает? куда закидывает? что в этому случае происходит?
> сервлет который даёт ссылки на флы на сервере(он их просто перечисляет за щёт рекурсивного обхода каталогов) даёт так же ссылку на новый файл – но она не пашет!
как не пашет? почему не пашет? как это выглядит?
> Если даже в ручную создать опубликованную директорию на сервере то через NetBeans то файлы будут доступны всё время и к тому же новые загружены файлы не будут проиндексированы(не получают ссылок на себя).
при чем здесь это? как это вообще понять можно? где запятые?
проведите синтаксический анализ опубликованных вами предложений.
10 февраля 2009 в 12:03
если закидываю файл просто на сервер. а сервлет который даёт ссылки на флы на сервере(он их просто перечисляет за щёт рекурсивного обхода каталогов) даёт так же ссылку на новый файл – но она не пашет!
10 февраля 2009 в 8:04
а в чем проблема?
> в тупую закидываю файл Upload на сервер
это как?
> ссылка на не не пашет и выдаёт ошибку
спорное утверждение.
>новые загружены файлы не будут проиндексированы(не получают ссылок на себя)
не понятно ни разу.
10 февраля 2009 в 2:00
есть такая штука – php называться))))))))))))))))
10 февраля 2009 в 2:00
мне надо на Java.