Хотите отобразить список файлов с помощью jsp - PullRequest
0 голосов
/ 25 апреля 2011

Я новичок в netbeans с сервером Glassfish. Мой HTML-код выглядит так,

<html>
    <body>
<form id="file_upload_form" method="post" enctype="multipart/form-data" action="upload.java">
    <div style="float:center">
        <center>
            Select a file:
            <input type="file" name="first" />
            <input type="submit" name="button" value="upload" />
        </center>
    </div>
    <center>
        </br>
        </br>
        <iframe id="upload" style="background-color:white;" width=90% height=80%></iframe>
    </center>                
</form>
</body>
</html>

при отправке запроса я хочу сохранить загруженный файл на диске (например, c: / upload), а iframe (id = upload) должен отобразить файлы в папке (c: / upload). Кто-нибудь знает, где я могу найти пример кода, который показывает, как это делается?

Ответы [ 2 ]

1 голос
/ 25 апреля 2011

Для обработки HTTP multipart/form-data запросов в сервлете используйте Apache Commons FileUpload . Вы должны получить загруженный файл в формате FileItem. У него есть метод write().

String filename = FilenameUtils.getName(fileItem.getName()); 
fileItem.write(new File("c:/upload", filename)); // Name must be unique!

Руководство по использованию и другие примеры кода можно найти в Руководстве пользователя .


Чтобы отобразить список файлов в папке, вам необходимо использовать API java.io.File, у него есть метод listFiles(), который возвращает список всех файлов (путей) по определенному пути. , Сделайте это с помощью предварительной обработки servlet , которая перенаправляет запрос в JSP для отображения списка.

File[] files = new File("c:/upload").listFiles();
request.setAttribute("files", files);
request.getRequestDispatcher("/WEB-INF/uploads.jsp").forward(request, response);

В файле /WEB-INF/uploads.jsp используйте JSTL <c:forEach> для итерации по File[].

<c:forEach items="${files}" var="file">
    <c:out value="${file.name}" /> (${file.length / 1024}KB)<br/>
</c:forEach>

Обратите внимание, что это, конечно, открыто для более тонкой настройки (UI), но это зависит от вас. Я предполагаю, что вы уже знаете основы HTML / JSP / Servlet.

0 голосов
/ 03 марта 2016

Вы можете сделать это

     <%!
      Object path;
      public void getDirectory(String path, Vector files, Vector folder){
      File directory=new File(path); 
     File []file=directory.listFiles();
        for(int i=0; i<file.length; i++){
       if(file[i].isDirectory()){
        folder.add(file[i].getName());
       }
       else{
        files.add(file[i].getName());
       }
    }
 }
 %>

<table>
<%

    path=session.getAttribute("fileName");
   Vector file=new Vector(), folder=new Vector();
  getDirectory("C:/FileFolderProject/WebContent/"+path,file,folder);
   out.println("<music>");

  for(int a=0; a<file.size(); a++){
    %>
     <tr>
     <td>
      <img src="images/editfileimg.jpg" alt="file">
      </td>
     <td>
     <% 
     out.println("<file>"+file.elementAt(a).toString()+"</file><br/>");
    %>
     </td>
     <tr>
  <%

  }
  out.println("</music>");
  %>
   </table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...