1

プロジェクトフォルダにファイルをアップロードしたい。私のコードは次のとおりです。

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    File savedFile;
    String destination;

    List<FileItem> items = null;
    try {
        items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
    } catch (FileUploadException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    for (FileItem item : items) {
        if (item.isFormField()) {
            // Process regular form field (input type="text|radio|checkbox|etc", select, etc).
        } else {
            // Process form file field (input type="file").
            String fieldName = item.getFieldName();
            String fileName = FilenameUtils.getName(item.getName());
            InputStream fileContent = item.getInputStream();

            String userName = (String) session.getAttribute("newUser");

            destination = getServletConfig().getServletContext().getContextPath() + "\\" + userName + ".jpeg";
            savedFile = new File(destination);

            //Check if file exists
            if(!savedFile.exists()) 
                savedFile.createNewFile();

            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(savedFile));
            byte[] buffer = new byte[1024];
            int len;

            //Read from file and write to new file destination
            while((len = fileContent.read(buffer)) >= 0) {
                bos.write(buffer, 0, len);
            }

            //Closing the streams
            fileContent.close();
            bos.close();

        }
    }

}

jspファイルを実行し、必要な画像を参照して選択し、フォームを送信すると、サーブレットは実行されますが、IOExceptionがスローされます。例外は、savedFile.createNewFile()を使用して新しいパスを作成する行によってスローされます。そのコードを使用する前に、別のFileNotFoundExceptionがスローされました。私が提供したパスが正しいかどうかはわかりません。

4

1 に答える 1

2

getRealPath()メソッドを使用してみてください。

 String fileName="/" + userName + ".jpeg";
 destination = getServletContext().getRealPath(fileName);
 savedFile = new File(destination);
于 2012-09-25T04:43:09.483 に答える