JAVA eclipse如何上传图片到数据库?

2025-10-09 19:38:39

1、笔者是在Eclipse 8.0的编程环境中演示的,使用的是MVC三层架构。需要用到两个图片处理的插件,这两个插件直接在网上搜索下载(根据自己的eclipse版本进行选择),解压后放到WebContent——WEB-INF——lib目录下

JAVA eclipse如何上传图片到数据库?

JAVA eclipse如何上传图片到数据库?

2、创建一个用于处理图片的类PhotoDao.java(包含以下函数),可以直接复制,仅需修改saveFile函数的绝对路径(项目中存放图片的img文件所在的路径):

package Photo; 

public class PhotoDao {

/**

    *2018年10月24日下午10:41:33

    *这个函数的功能是获取前端的数据集合,将文件打包成File以便后续操作

     */

    public static List<FileItem> getRequsetFileItems(HttpServletRequest request,ServletContext servletContext){

        boolean isMultipart=ServletFileUpload.isMultipartContent(request);

        if(isMultipart) {

            DiskFileItemFactory factory = new DiskFileItemFactory();

            String str="javax.servelet.context.tempdir";

            File repository=(File) servletContext.getAttribute(str);

            factory.setRepository(repository);

            ServletFileUpload upload=new ServletFileUpload(factory);

            try {

                return upload.parseRequest(request);

            }catch (FileUploadException e) {

                // TODO: handle exception

                return null;

            }

        }else {

            return null;

        }

    }

    /**

    *2018年10月24日下午10:37:59

    *这个函数的功能是将文件传到预先设置的绝对路径中,也就是项目里的imgs文件夹

     */

    public static boolean saveFile(FileItem item,String fileName) {        

        File savePath=new File("D:\\eclipse\\workspace\\项目名称\\WebContent\\img");

        if(!savePath.exists()) {

            savePath.mkdirs();

        }

        File uploadFile=new File(savePath+File.separator+fileName);

        try{

            item.write(uploadFile);

            //System.out.println("保存文件成功");

            return true;

        }catch(Exception e){

           // System.out.println("保存文件失败");

        }

        return false;

    }

    /**

    *2018年10月24日下午8:02:04

    *这个函数的功能是获取当前时间点与1970年的间隔秒数

     */

    public static int getSecondTimestamp(Date date){

        if (null == date) {

            return 0;

        }

        String timestamp = String.valueOf(date.getTime());

        System.out.println(timestamp);

        int length = timestamp.length();

        if (length > 3) {

            return Integer.valueOf(timestamp.substring(0,length-3));

        } else {

            return 0;

        }

    }

    

    /**

     * 

    *2018年10月24日下午8:42:05

          *这个函数的功能是得到新的照片名称

     */

     public static String getPhotoNewName() {

         Date date=new Date();

         int second=getSecondTimestamp(date);

         String fileName=String.valueOf(second)+".jpg";

         return fileName;

    }

     

     /**

     *2018年10月24日下午8:48:58

              *这个函数的功能是判断文件后缀是否是jpg格式

      */

     public static boolean isGif(FileItem item) {

        String fileFullName=item.getName();

         File fileInfo=new File(fileFullName);

         String suffix = fileInfo.getName().substring(fileInfo.getName().lastIndexOf(".") + 1);

         if(suffix.equals("jpg")) {

             return true;

         }

         return false;        

     }

}

JAVA eclipse如何上传图片到数据库?

3、创建zhuce.jsp:

JAVA eclipse如何上传图片到数据库?

JAVA eclipse如何上传图片到数据库?

JAVA eclipse如何上传图片到数据库?

JAVA eclipse如何上传图片到数据库?

JAVA eclipse如何上传图片到数据库?

JAVA eclipse如何上传图片到数据库?

4、创建上传图片的UserServlet:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

//获取本次操作的类型

String type = request.getParameter("type");

//注册

try {

switch (type) {

case "zhuce":

user_zhuce(request, response);

break;

}

}catch (SQLException e) {

e.printStackTrace();

}

}

//注册

protected void user_zhuce(HttpServletRequest request, HttpServletResponse response) throws IOException, SQLException, ServletException {

String uname = null;  //用户名

String unickname = null;  //昵称

String upass1 = null;  //密码

String upass2 = null;  //二次输入的密码

String uemail = null;  //邮箱

List<String> list=new ArrayList<String>();

String filename=PhotoDao.getPhotoNewName();    //

ServletContext servletContext=null;

servletContext=request.getSession().getServletContext();   //获取文件的真实路径:在数据库中存储格式:/webTest/img/***.jpg

//第一步:获取页面上上传的图片资源

List<org.apache.commons.fileupload.FileItem> items=PhotoDao.getRequsetFileItems(request,servletContext);    //

boolean isLoadToSQL=false;

for(org.apache.commons.fileupload.FileItem item:items) {

if(!item.isFormField()){     //是文件类型的

//判断后缀名是否是jpg

if(PhotoDao.isGif(item)) {     //

isLoadToSQL=PhotoDao.saveFile(item,filename);   //

}else {

System.out.println("后缀格式有误,保存文件失败");

}

}else {   //不是文件,是表单类型

switch(item.getFieldName()) {  //获取表单标签“name”的属性值

case "uname": uname = item.getString("UTF-8");break;

case "unickname": unickname = item.getString("UTF-8");break;

case "upass1": upass1 = item.getString("UTF-8");break;

case "upass2": upass2 = item.getString("UTF-8");break;

case "uemail": uemail = item.getString("UTF-8");break;

}

}

}

String finalPhotoName= "./img/"+filename;

User user =new User();

boolean flag = user.adduser(uname, unickname, upass1, upass2, uemail, finalPhotoName);

if(flag==false) {

JOptionPane.showMessageDialog(null, "用户注册失败!", "警告信息", JOptionPane.WARNING_MESSAGE);

request.getRequestDispatcher("./zhuce.jsp").forward(request, response);

}

else request.getRequestDispatcher("./login.jsp").forward(request, response);

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

doGet(request, response);

}

}

5、效果图如下:

JAVA eclipse如何上传图片到数据库?

JAVA eclipse如何上传图片到数据库?

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢