如何获取以jsp格式上传的文件

时间:2011-11-07 22:34:18

标签: html jsp servlets file-upload

我在jsp方面有这个代码:

<body>
    <form action="upload" method="post" enctype="multipart/form-data">
        <table>
            <tr>
                <td>Select File : </td>
                <td><input  name="file" type="file"/> </td>
            </tr>
            <tr>
                <td>Enter Filename : </td>
                <td><input type="text" name="photoname" size="20"/> </td>
            </tr>
        </table>
        <p/>
        <input type="submit" value="Upload File"/>
    </form>
 </body>

这会上传一个文件。

在servlet中,我有代码:

protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {

            Part p1 = request.getPart("file");
            InputStream is = p1.getInputStream();


            Part p2 = request.getPart("photoname");
            Scanner s = new Scanner(p2.getInputStream());
            String filename = s.nextLine();   



            // get filename to use on the server
            String outputfile = "C:\\Documents and Settings\\Sherman\\Desktop\\ImoveiSP\\ImoveiSP\\DB_Scripts" + filename + ".jpg";
            //outputfile = outputfile + ".jpg";
            //System.out.println("out  = " + outputfile);
            FileOutputStream os = new FileOutputStream(outputfile);

            // write bytes taken from uploaded file to target file
            int ch = is.read();
            while (ch != -1) {
                os.write(ch);
                ch = is.read();
            }
            os.close();
            out.println("<h3>File uploaded successfully! </h3>");


            File file = new File("C:\\Documents and Settings\\Sherman\\Desktop\\ImoveiSP\\ImoveiSP\\DB_Scripts" + filename + ".jpg");
            uploadAmazon(file, "ibagem", "");

        } catch (Exception ex) {
            out.println("Exception -->" + ex.getMessage());
        } finally {
            out.close();
        }
    }

此servlet获取上载的文件并将其保存到磁盘。

我对这些代码有两个问题:

  1. 在jsp方面,如何强制用户只发送.jpg或.mpg文件?
  2. 如果我在jsp端添加了一个以上的输入,那么我如何在servlet中接收所有内容?

1 个答案:

答案 0 :(得分:1)

我建议使用Commons FileUpload来处理所有这些问题;它让事情变得更容易。 See the user guide for details

处理多个文件与处理单个文件相同。

我建议将该绝对路径名移动到配置参数btw。