JSP Servlet上传图像文件

时间:2014-02-20 11:49:22

标签: java jsp servlets file-upload

如何使用JSP和Servlet上传图像。我使用以下代码在JSP页面中获取图像:

<p>File: <input type="file" name="file_to_upload"> </p>

现在我想知道如何获取这些文件以及如何将它们保存在特定目录中?我将该文件夹命名为“images”,我想将我上传的所有文件放在该文件夹中。当我重新启动服务器或刷新页面时,实际上会保存图像。

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:2)

要使用JSP上传文件,您必须处理multipart / form-data请求。

我知道这样做的最简单方法是使用apache commons fileupload,详见此处http://www.javacodegeeks.com/2013/08/file-upload-example-in-servlet-and-jsp.html

PS。教程有点不对劲: - )

index.jsp必须包含类似

的内容
<form action="upload" method="post" name="uploadForm" enctype="multipart/form-data">
<input name="uploadfile" type="file" size="50″>
<input name="submit" type="submit" value="Submit">
</form>

答案 1 :(得分:1)

使用上传文件的表格必须是'enctype =“multipart / form-data”'。

<%@ page language="java"  pageEncoding="gb2312"%>

<%@ page import="java.io.*,java.awt.Image,java.awt.image.*,com.sun.image.codec.jpeg.*,java.sql.*,com.jspsmart.upload.*,java.util.*"%>

<%@ page import="mainClass.*" %>

<html>
  <head>
   <title>My JSP 'uploadimage.jsp' starting page</title>
  </head>
  <body>

    <%

    SmartUpload sma=new SmartUpload();
    long file_max_size=4000000;
    String filename1="",ext="",testvar="";
    String url="uploadfiles/";
    sma.initialize(pageContext);
     try

    {

    sma.setAllowedFilesList("jpg,gif");
    sma.upload();
    }catch(Exception e){

    %>

    <script language="jscript">

    alert("only jpg,gif allowed to upload!")

    window.location.href="upfile.jsp"

    </script>

    <%



     }

        try{

        com.jspsmart.upload.File myf=sma.getFiles().getFile(0);

        }else{
        ext=myf.getFileExt();

        int file_size=myf.getSize();
        String saveurl="";
        if(file_size < file_max_size){
        Calendar cal=Calendar.getInstance();
        String filename=String.valueOf(cal.getTimeInMillis());
        saveurl=request.getRealPath("/")+url;
        saveurl+=filename+"."+ext;
        myf.saveAs(saveurl,sma.SAVE_PHYSICAL

);
    myclass mc=new myclass(request.getRealPath("data/data.mdb"));
      mc.executeInsert("insert into [path] values('uploadfiles/"+filename+"."+ext+"')");    out.println("ok!");
    response.sendRedirect("showimg.jsp");
    }
    }

    }catch(Exception e){

    e.printStackTrace();

    }
    %>
  </body>
</html>

当您想要显示文件时,您应该在项目中编写文件路径,因此不要将文件保存在其他地方,这会在您的服务器想要找到它时遇到麻烦。

第一个回答问题,所以你明白......

答案 2 :(得分:0)

我认为处理文件上传(以及多部分/表单数据请求)的最佳方法是使用Apache common file upload

它提供了许多有用的类来帮助管理文件上传事宜。