我是使用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>
提交请求时,我想将上传的文件存储在驱动器(ex.c:/ upload)中,iframe(id = upload)应显示文件夹中的文件(c:/ upload)。有谁知道我在哪里可以找到一些示例代码来说明这是如何完成的?
答案 0 :(得分:1)
要在servlet中处理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!
有关使用指南和更多代码示例,请查看他们的User Guide。
要显示文件夹中的文件列表,您需要使用java.io.File
API,它具有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的基础知识。
答案 1 :(得分:-1)
你可以这样做
<%!
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>