一尘不染

要使用jsp显示文件列表

jsp

我是使用glassfish服务器来使用netbeans的新手。我的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>

提交请求时,我想将上传的文件存储在drive(ex.c:/ upload)中,而iframe(id = upload)应该在文件夹(c:/
upload)中显示文件。有谁知道我在哪里可以找到一些示例代码来说明如何完成此工作?


阅读 424

收藏
2020-06-08

共1个答案

一尘不染

multipart/form-data在Servlet中处理HTTP 请求,请使用Apache Commons
FileUpload
。您最终应该在中上传文件FileItem。它有一种write()方法。

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

有关使用指南和更多代码示例,只需查看其《用户指南》


要显示文件夹中的文件列表,您需要使用java.io.FileAPI,它具有一种listFiles()返回特定路径中所有文件(路径)列表的方法。在预处理servlet中执行此操作,该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基础。

2020-06-08