私はかなり長い間このトピックを検索してきましたが、私の問題を解決できるものは何も見つかりませんでした..だから私はあなたに頼ります!
ファイル ダイアログ ボックスを開いてファイルを選択する JSP があります。以前は、これを使用してファイルを指定したディレクトリ (コード内) にアップロードしていました。これはうまくいきます。現在、同じコードを使用して、適切なディレクトリで同じファイルを選択し、以下に含めたサーブレットに渡すことで、同じファイルを削除しようとしています。これを行うために、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 からファイルを保存する場所です。最初にディレクトリ内の DIFFERENT FILE を選択する限り、ハードコーディングされたディレクトリで storeFile に対してコメントアウトした行のコメントを解除すると、delete メソッドは正常に機能します。これにより、HttpServletRequest がファイルをメモリ内のどこかに保持していると思われます。
これは正しいです?最初に選択したファイルを削除できるように解放する方法はありますか? または、これを行うためのはるかに簡単な方法はありますか?
ありがとう!