我一直在寻找这个主题很长一段时间,并没有找到任何能够解决我的问题的东西..所以我求助于你!
我有一个 JSP,我在其中打开一个文件对话框来选择一个文件。以前,我使用它来将文件上传到指定目录(在我的代码中)。这工作正常。我现在尝试使用相同的代码删除相同的文件,方法是在适当的目录中选择它并将其传递给我在下面包含的 servlet。我正在使用 Apache Common FileUpload 库来执行此操作。
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// checks if the request actually contains upload file
if (!ServletFileUpload.isMultipartContent(request)) {
// if not, we stop here
return;
}
// configures some settings
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload delete = new ServletFileUpload(factory);
// constructs the directory path to delete file
String deletePath = UPLOAD_DIRECTORY;
// parses the request's content to extract file data
List formItems = delete.parseRequest(request);
Iterator iter = formItems.iterator();
// iterates over form's fields
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
// processes only fields that are not form fields
if (!item.isFormField()) {
String fileName = new File(item.getName()).getName();
String filePath = deletePath + File.separator + fileName;
File storeFile = new File(filePath);
//File storeFile = new File("C:\\temp\\discLogo.txt");
// deletes the file on disk
boolean erased = storeFile.delete();
}
}
UPLOAD_DIRECTORY 是我从上传 JSP 存储文件的地方。如果我用硬编码目录取消注释我为 storeFile 注释掉的行,删除方法就可以正常工作,只要我最初在目录中选择一个不同的文件。这让我相信 HttpServletRequest 将文件保存在内存中的某个地方。
它是否正确?有什么办法可以释放它,以便我可以删除最初选择的文件?还是有更简单的方法来做到这一点?
谢谢!