java web 上传图片到项目目录并将文件路径放到数据库

本文介绍了如何在Java Web应用中实现图片上传到/webTest/imgs/目录,并将图片路径存储到数据库的过程。通过Eclipse环境,使用MySQL数据库,创建PhotoDao处理图片资源,JSP前端页面接收文件,Servlet处理服务端逻辑,最终成功将图片存储并能在后续展示。
摘要由CSDN通过智能技术生成

  最近在学习java web,在练习DVD信息管理系统时一直对照片上传问题的处理感到非常棘手,在我的仔细研究和钻研下,终于完美解决了这个难题,下面我讲述一下具体的步骤:

思路阐述:将图片放到项目的/webTest/imgs/文件夹下,为了避免图片名重复,将图片名改为获取当前秒数+ .jpg的格式。然后将图片的项目路径储存到数据库中,以便后面展示图片进行读取图片信息。

 

第一步:准备工作

环境要求

1. 开发环境: Eclipse

2.导入两个文件上传的jar包

 

3 MySQL平台,我用的是dbForge Studio for MySQL。

 

第二步 创建一个PhotoDao类来处理前台file Input上传的图片资源

 
  
/**

* @author Mr Tang

* @version Create Time:2018年10月24日 下午8:22:22
* com.tang.dao
*

*/
package com.tang.dao;

import java.io.File;
import java.util.Date;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

/**
 * @author Mr Tang
 *
 */
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("E:\\Users\\javawebspace\\dvdWeb3.5\\WebContent\\imgs");
        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格式
      *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值