精华内容
下载资源
问答
  • java+web上传图片保存到数据库

    千次阅读 2019-04-12 11:48:46
    1.上传图片:html代码示例。 <div class="form-group col-sm-12"> <label class="col-sm-2 control-label no-padding-right"><span class="ytRequired"></span>头像:</label> &...

    1.上传图片:html代码示例。

    <div class="form-group  col-sm-12">
        <label class="col-sm-2 control-label no-padding-right"><span class="ytRequired"></span>头像:</label>
        <div class="col-sm-4">
            <div class="col-sm-12 upload-content" id="upImageDiv">
                <input type="file" id="uploadInput" accept="image/gif,image/jpeg,image/x-png" class="fileInput" />
                <a href="javascript:void(0)" class="selectImage">上传图片</a>
            </div>
            <div class="imageBox" id="imageBox" style="margin-top: 10%;">
            </div>
        </div>
    </div>

    2.上传图片:初始页面要加入代码,uploadInput是上面的input框的id,imageBox,是上面要显示图片的div。

    <script type="text/javascript">
    	uploadImageInit("uploadInput", "imageBox");
    </script>

    上传图片封装的js文件uploadLocalImage.js。

    /**
     * 初始化图片(图片上传封装控件)
     * @author tyg
     */
    
    /**
     * 初始化上传图片控件(只能单张图片)
     * @param inputId		input框点击上传的按钮id,可空,默认:uploadInput
     * @param boxId			显示区域的id,可空,默认:imageBox
     * @returns
     */
    function uploadImageInit(inputId, boxId){
    	if(inputId == undefined || inputId == null){
    		inputId = "uploadInput";
    	}
    	if(boxId == undefined || boxId == null){
    		boxId = "imageBox";
    	}
    	$("#"+inputId).change(function(){
    		var reader = new FileReader();
    		var file = document.getElementById(inputId).files[0];
    		if(file.size/1024/1024 > 10){
    			$.success("上传图片不能大于10M!");
    		}
    		reader.readAsDataURL(file);
    		reader.onload = function(e) {
    			var imgHtml="";
    			imgHtml+="<div class='image_item' style='width:160px;height:160px;'>";
    			imgHtml+="<img src='"+this.result+"' alt='' style='display: block;'/>";
    			imgHtml+="<span class='delete' onclick='deleteImageItem(this)'></span>";
    			imgHtml+="</div>";
    			$("#" + boxId).html(imgHtml);
    		}
    	});
    }
    /**
     * 显示图片,一般用于修改页面,将之前的图片显示出来(只能单张)
     * @param boxId	显示区域的id,可空,默认:imageBox
     * @param url	图片地址
     * @returns
     */
    function showImage(boxId, url){
    	if(boxId == undefined || boxId == null){
    		boxId = "imageBox";
    	}
      	var imgHtml="";
      	imgHtml+="<div class='image_item' style='width:160px;height:160px;'>";
      	imgHtml+="<img src='"+url+"' alt='' style='display: block;'/>";
      	imgHtml+="<span class='delete' onclick='deleteImageItem(this)'></span>";
      	imgHtml+="</div>";
      	$("#" + boxId).html(imgHtml);
    }
    
    /**
     * 显示图片,一般用于修改页面,将之前的图片显示出来(可以多张)
     * @param boxId	显示区域的id,可空,默认:imageBox
     * @param url	图片地址
     * @returns
     */
    function showImages(boxId, url){
    	if(boxId == undefined || boxId == null){
    		boxId = "imageBox";
    	}
    	var imgHtml=$("#" + boxId).html();
    	imgHtml+="<div class='image_item' style='width:160px;height:160px; margin-left:5px; float: left'>";
    	imgHtml+="<img src='"+url+"' alt='' style='display: block;'/>";
    	imgHtml+="<span class='delete' data-id='"+url+"' onclick='deleteImageItem(this)'></span>";
    	imgHtml+="</div>";
    	$("#" + boxId).html(imgHtml);
    }
    /**
     * 获取单张图片文件
     * @param inputId	input框的id
     * @returns	返回的是文件
     */
    function getImageUrl(inputId){
    	return document.getElementById(inputId).files[0];
    }
    // 删除图片
    function deleteImageItem(obj){
        var id = $(obj).attr("data-id");
        photo.deletePhoto(id);
      	$(obj).parent().remove();
    };

    3.上传图片:获取图片文件,返回值是一个文件,js代码示例。

    var file = getImageUrl("uploadInput");

    4.上传图片:上传文件必须使用FormData。

    var formData = new FormData();
    formData.append('phone', params.phone);
    formData.append('name', params.name);
    formData.append('file', file);
    // 上传图片的请求
    $.processDataImg(url, formData, function(result) {
    	if (result.state == 200) {
    		$.success('操作成功!');
    		user.backList();
    	} else {
    		$.error(result.message);
    	}
    })

    注意:发起请求时需要加入:

    contentType: false,
    processData: false,
    mimeType: "multipart/form-data",

    5.上传图片:后台接收要使用:@RequestParam(required = false) MultipartFile file,required=false是为了避免为空出现异常,并且后台要在spring的配置文件配置如下代码。

    <!-- SpringMVC默认是关闭fileupload功能的,开启该能够并验证文件上传 -->
    <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="20000000"/>
        <property name="maxInMemorySize" value="1024000" />
    </bean>
    @RequestMapping(value = "/user/addUser", method = RequestMethod.POST)
    public Object addUser(UserAddVO user, @RequestParam(required = false) MultipartFile file) throws BusinessException {
    	user.setFileHeadImg(file);
    	userI.addUser(user);
    	return ResultUtil.success();
    }
    
    /**
     * 读取图片
     * @param file	文件
     * @param size	上传图片大小(单位M)
     * @return
     * @throws BusinessException
     * @return byte[]
     * @author tyg
     * @date   2019年3月19日上午12:33:47
     */
    public static byte[] getImgByte(MultipartFile file, Long size) throws BusinessException {
    	if (file != null) {
    		try {
    			size = size == null ? 5120000L : size * 1024L * 1024L;
    			Assert.isTrue(file.getSize() > size.longValue(), "上传图片不能超过"+(size / 1024L / 1024L)+"M!");
    			InputStream stream = file.getInputStream();
    			byte[] pictureData = new byte[(int) file.getSize()];  
    			stream.read(pictureData);
    			return pictureData;
    		} catch (IOException e) {
    			e.printStackTrace();
    			logger.error("读取文件失败!");
    		}
    		
    	}
    	return null;
    }

    6.上传图片:后台将file转为byte[],就可以直接存到数据库了数据的类型要设置为blob或者是longblob。

    byte[] fileByte = ImageUtil.getImgByte(file,null);

    7.显示图片:

    showImage("imageBox", "/img/showUserHeadImage?_"+new Date().getTime()+"&id="+id);
    /**
     * 响应图片流
     * @param response
     * @param imgData
     * @return void
     * @author tyg
     * @date   2019年3月15日上午10:49:55
     */
    public static void writeImg(HttpServletResponse response, byte[] imgData) {
    	response.setContentType("image/jpeg");
    	ServletOutputStream outputStream = null;
    	try {
    		outputStream = response.getOutputStream();
    		outputStream.write(imgData);
    		outputStream.flush();
    	} catch (IOException e) {
    		e.printStackTrace();
    		logger.info("读取文件失败!");
    	} finally {
    		closeIo(outputStream);
    	}
    }

     

    展开全文
  • 下面是Servlet如何把图片上传到数据库的步骤: 在Web项目的lib目录下引入上传文件的相关jar包,当然这两个jar包缺一包括,因为上传文件的jar包是依赖io.jar包的,所以要同时引入两个jar包 设置数据库存储文的类型...

    Servlet上传文件主要有两种方式,一种是直接上传到服务上,另外一种就是把文件直接保存到数据库中,
    那么,如何把图片文件保存到数据库中呢?下面是Servlet如何把图片上传到数据库的步骤:

    1. 在Web项目的lib目录下引入上传文件的相关jar包,当然这两个jar包缺一包括,因为上传文件的jar包是依赖io.jar包的,所以要同时引入两个jar包
      在这里插入图片描述
    2. 设置数据库存储文的类型,存储图片类型为blob类型:
      在这里插入图片描述
    3. 创建Commodity类,主要是映射(设置或获取)数据库的值,其中存储文件的变量类型为byte[]类型
      在这里插入图片描述
    4. 连接MySql数据库
      在这里插入图片描述
    5. 配置Servlet相关参数,并且调用添加商品信息的方法来进行处理上传的文件,然后把所有表单提交过来的字段以及文件进行映射到Commodity类的对象中,再把该对象传给操作数据库的类中进行保存。
      在这里插入图片描述
      在这里插入图片描述
    6. 操作数据库,新增一条数据,其中文件类型的用二进制数据存储到数据库中,如果i变量返回大于0则为成功保存一条数据,然后关闭连接数据库的资源
      在这里插入图片描述
    7. 把前端表单提交到Servlet中,因为涉及了文件的上传,所以表单中的enctype要设置为multipart/form-data类型,并且不能用get提交方法来提交,get提交有大小的限制,在上传文件时会提交不了
      在这里插入图片描述
      在这里插入图片描述
    展开全文
  • 最近在做一个二手商品交易的web,但是在客户上传图片的时候没有传到数据库里。 求大神指导,没有学过怎么上传文件。 这是发布商品页面 断点调试的时候count数值为-1 图片根本传不上去[img=...
  • 59 //数据库中存储格式:/webTest/imgs/***.jpg 60 //第一步:获取页面上上传的图片资源 61 List items=PhotoDao.getRequsetFileItems(request,servletContext); 62 boolean isLoadToSQL=false; 63 for(FileItem item...

    1 packagecom.tang.control;2 importjava.io.IOException;3 importjava.io.PrintWriter;4 importjava.sql.SQLException;5 importjava.util.ArrayList;6 importjava.util.List;7

    8 importjavax.servlet.ServletContext;9 importjavax.servlet.ServletException;10 importjavax.servlet.annotation.WebServlet;11 importjavax.servlet.http.HttpServlet;12 importjavax.servlet.http.HttpServletRequest;13 importjavax.servlet.http.HttpServletResponse;14 importjavax.servlet.http.HttpSession;15

    16 importorg.apache.commons.fileupload.FileItem;17

    18 importcom.tang.common.Page;19 importcom.tang.dao.DvdDao;20 importcom.tang.dao.PhotoDao;21 importcom.tang.dao.UserDao;22 importcom.tang.models.DVDInfoData;23

    24 /**

    25 *@authorMr Tang26 *27 */

    28 @WebServlet("/ProductServlet")29 public class ProductServlet extendsHttpServlet {30 publicProductServlet() {31 super();32 }33 protected voiddoGet(HttpServletRequest request,34 HttpServletResponse response) throwsServletException, IOException {35 String method = request.getParameter("method");36 try{37 switch(method) {38 case "add":39 //转接给相对应的函数去处理相关数据。

    40 addDVDinfo(request, response);41 break;42 } catch(SQLException e) {43 //TODO Auto-generated catch block

    44 e.printStackTrace();45 }46 }47 /**

    48 *

    49 * 这个函数实现了增加dvd的功能50 *

    51 *@throwsSQLException52 *@throwsServletException53 */

    54 private static void addDVDinfo(HttpServletRequest request, HttpServletResponse response) throwsIOException, SQLException, ServletException {55 List list=new ArrayList();

    56 String filename=PhotoDao.getPhotoNewName();

    57 ServletContext servletContext=null;

    58 servletContext=request.getSession().getServletContext();

    59 //数据库中存储格式:/webTest/imgs/***.jpg

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

    61 List items=PhotoDao.getRequsetFileItems(request,servletContext);

    62 boolean isLoadToSQL=false;

    63 for(FileItem item:items) {

    64 if(!item.isFormField()){

    65 //判断后缀名是否是jpg

    66 if(PhotoDao.isGif(item)) {

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

    68 }else {

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

    70 }

    71 }else{72 /*获取表单中的非文件值73 表单中的空间name值74 System.out.println("name值: "+item.getFieldName());75 该name值空间中的value值76 System.out.println(item.getString("UTF-8"));*/

    77 list.add(item.getString("UTF-8"));78 }79 }80 String dvdNum=DvdDao.returnNextNum();81 //存在数据库里面的照片路径是在项目里的相对路径

    82 String finalPhotoName= request.getContextPath()+"/imgs/"+filename;83 int bol=DvdDao.addDVD(dvdNum, "《"+list.get(0)+"》",list.get(1),list.get(2),finalPhotoName);84 if(list.get(4).equals("FULL")) {85 if(bol>0) {86 PrintWriter out=response.getWriter();87 out.flush();88 out.print("

    92 out.print("'\");");93 out.close();94 }else{95 PrintWriter out=response.getWriter();96 out.flush();97 out.print("");101 out.close();102 }103 }104 else if(list.get(4).equals("EMPTY")){105 PrintWriter out=response.getWriter();106 out.flush();107 out.print("");110 out.close();111 }112 }113 protected void doPost(HttpServletRequest request,HttpServletResponse response) throwsServletException, IOException {114 doGet(request, response);115 }116 }

    展开全文
  • 最近在学习java web,在练习DVD信息管理系统时一直对照片上传问题的处理感到非常棘手,在我的仔细研究和钻研下,终于...然后将图片的项目路径储存到数据库中,以便后面展示图片进行读取图片信息。 需要导入两个j...

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

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

    需要导入两个jar包:

    一.建立实体类和Dao层

    /**
    
    * @author Mr Tang
    
    * @version Create Time:2018年10月2日 下午6:39:04
    * com.tang.models
    *
    
    */
    package com.tang.models;
    
    /**
     * @author Mr Tang
     *
     */
    public class DVDInfoData {
    private String dvdnum;
    private String dvdname;
    private String dvdstate;
    private String dvdtype;
    private String dvdphoto;
    /**
     * 
     */
    
    public DVDInfoData() {
        super();
    }
    /**
     * @param dvdnum
     * @param dvdname
     * @param dvdstate
     * @param dvdtype
     * @param dvdphoto
     */
    public DVDInfoData(String dvdnum, String dvdname, String dvdstate, String dvdtype, String dvdphoto) {
        super();
        this.dvdnum = dvdnum;
        this.dvdname = dvdname;
        this.dvdstate = dvdstate;
        this.dvdtype = dvdtype;
        this.dvdphoto = dvdphoto;
    }
    }
    package com.tang.dao;
    
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.regex.Pattern;
    
    import com.tang.Util.BeanHandler;
    import com.tang.Util.BeanListHandler;
    import com.tang.Util.JDBCUtil;
    import com.tang.models.DVDInfoData;
    
    /**
     * @author Mr Tang
     * 这个类被用来处理来自数据库的DVD数据,增删改查以及其他功能的实现。
     * 继承自DBUtilsBaseDao,简化数据库操作
     */
    public class DvdDao extends DBUtilsBaseDao{
    /**
         * @author Mr Tang
         * @throws SQLException 
         * @expression This method is used to show all DVD information to users.
         *It must be do this...
         */
        @SuppressWarnings("unchecked")
        public static  List<DVDInfoData> ShowAllDVD() throws SQLException{
            String sql="SELECT * FROM dvddb order by dvdname desc" ;
            Object[] params= {};
            return (List<DVDInfoData>) JDBCUtil.query(sql, params, new BeanListHandler(DVDInfoData.class));
        }
    /**
         * 
         *2018年10月21日下午11:38:46
         *这个函数的功能是添加DVD信息
         */
        public static int addDVD(String dvdNum,String dvdName,String dvdstate,String dvdtype,String dvdphoto) throws SQLException {
            int result=0;
            if(dvdNum!=""&&dvdName!="") {
                Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
                if(pattern.matcher(dvdNum).matches()){
                    String sql="INSERT INTO dvddb (dvdnum,dvdname,dvdstate,dvdtype,dvdphoto) VALUES (?,?,?,?,?)" ;
                    Object[] params=new Object[]{
                            dvdNum,
                            dvdName,
                            dvdstate,
                            dvdtype,
                            dvdphoto
                    };
                    result=JDBCUtil.update(sql, params);
                }
            }
            return result;
        }
    }

    二.创建一个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格式
          */
         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;        
         }
    }

    三.创建一个接收图片的jsp前端页面

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
        String path = request.getContextPath();
        String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
                + path + "/";
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>添加DVD信息</title>
    </head>
    <style type="text/css">
    table.gridtable {
        font-family: verdana, arial, sans-serif;
        font-size: 15px;
        color: #333333;
        border-width: 1px;
        border-color: #666666;
        border-collapse: collapse;
    }
    
    table.gridtable th {
        border-width: 1px;
        padding: 8px;
        border-style: solid;
        border-color: #666666;
        background-color: #dedede;
    }
    
    table.gridtable td {
        border-width: 1px;
        padding: 8px;
        border-style: solid;
        border-color: #666666;
        background-color: #ffffff;
    }
    </style>
    <script type="text/javascript">
        //检查登录表单
        function checkBox() {
    /*         var name = document.getElementById("dvdName").value;
            var type = document.getElementById("dvdType").value;
    
            if (name != ""&&type!="") {
                return true;
            } else {
                document.getElementById("isEmpty").value = "EMPTY";
                alert("DVD信息不能为空哦~");
                document.getElementById("loginname").focus(); //光标占位
                return false;
            } */
        }
    </script>
    <body>
        <div style="margin-left: 400px">
            <h1 style="margin-left: 10px;">添加DVD信息:</h1>
            <br>
            <form  method="post"
                action="${pageContext.request.contextPath}/ProductServlet?method=add"
                enctype="multipart/form-data"
                >
    <!--             onsubmit=" return checkBox()"
     -->            <table class="gridtable">
                    <tr>
                        <td>编号(已自动分配不可修改):
                            <div id="myDiv">
                            </div>
                        </td>
                        <td width="300px"><input id="pr_dvdNum" type="text" name="pr_dvdNum"
                        value="${nextNum }" disabled="disabled"
                         style="border: 0px; font-size: 20px;">
                            </td>
                    </tr>
                    <tr>
                        <td>请输入DVD名字:</td>
                        <td width="300px"><input id="dvdName" type="text"
                            name="dvdName" style="border: 0px; font-size: 20px;"></td>
                    </tr>
                    <tr>
                        <td>请输入DVD状态:</td>
                        <td width="300px"><input id="dvdState" type="radio" checked
                        value="未借出"    name="dvdState" style="border: 0px; font-size: 20px;">未借出
                        <input id="dvdState" type="radio" 
                        value="已借出"    name="dvdState" style="border: 0px; font-size: 20px;">已借出
                        </td>
                    </tr>
                    <tr>
                    <td>请传入DVD图片<br>必须是gif格式</td>
                    <td><input type="file" name="file"
                     style="border: 0px; font-size: 20px;"
                    /></td>
                    </tr>
                    <tr>
                        <td>请输入DVD类型:</td>
                        <td width="300px"><input id="dvdType" type="text"
                            name="dvdType" style="border: 0px; font-size: 20px;">
                        <input type="hidden" name="currentPage" value="${currentPage}">
                            
                            </td>
                    </tr>
                    <tr>
    
                        <td colspan="2"><input type="submit" value="添加"
                            style="width: 120px; height: 30px; background-color: blue; border: 0px; color: #fff5ee; font-size: 15px; margin-left: 180px;">
                            <a href="${pageContext.request.contextPath}/ProductServlet?method=toMainView&currentPage=${currentPage }" style="float: right;">返回主页</a></td>
                    </tr>
                </table>
                <input type="hidden" id="isEmpty" name="isEmpty" value="FULL">
            </form>
        </div>
    </body>
    </html>

    四.创建后台处理Servlet服务端

    package com.tang.control;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    import org.apache.commons.fileupload.FileItem;
    
    import com.tang.common.Page;
    import com.tang.dao.DvdDao;
    import com.tang.dao.PhotoDao;
    import com.tang.dao.UserDao;
    import com.tang.models.DVDInfoData;
    
    /**
     * @author Mr Tang
     *
     */
    @WebServlet("/ProductServlet")
    public class ProductServlet extends HttpServlet {
        public ProductServlet() {
            super();
        }
        protected void doGet(HttpServletRequest request,
                HttpServletResponse response) throws ServletException, IOException {
    String method = request.getParameter("method");
            try {
                switch (method) {
                                    case "add":
                    //转接给相对应的函数去处理相关数据。
                    addDVDinfo(request, response);
                    break;
                         } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    /**
         * <p>
         *  这个函数实现了增加dvd的功能
         * <p>
         * @throws SQLException 
         * @throws ServletException 
         */
        private static void addDVDinfo(HttpServletRequest request, HttpServletResponse response) throws IOException, SQLException, ServletException {
            List<String> list=new ArrayList<String>();
            String filename=PhotoDao.getPhotoNewName();
            ServletContext servletContext=null;
            servletContext=request.getSession().getServletContext();
            //数据库中存储格式:/webTest/imgs/***.jpg
            //第一步:获取页面上上传的图片资源
            List<FileItem> items=PhotoDao.getRequsetFileItems(request,servletContext);
            boolean isLoadToSQL=false;
            for(FileItem item:items) {
                if(!item.isFormField()){
                    //判断后缀名是否是jpg
                    if(PhotoDao.isGif(item)) {
                        isLoadToSQL=PhotoDao.saveFile(item,filename);
                    }else {
                        System.out.println("后缀格式有误,保存文件失败");
                    }
                }else { 
                    /*获取表单中的非文件值
                    表单中的空间name值
                    System.out.println("name值:  "+item.getFieldName());
                    该name值空间中的value值
                    System.out.println(item.getString("UTF-8"));*/
                    list.add(item.getString("UTF-8"));
                }
            }
            String dvdNum=DvdDao.returnNextNum();
            //存在数据库里面的照片路径是在项目里的相对路径
            String finalPhotoName= request.getContextPath()+"/imgs/"+filename;
            int bol=DvdDao.addDVD(dvdNum, "《"+list.get(0)+"》",list.get(1),list.get(2),finalPhotoName);
            if(list.get(4).equals("FULL")) {
                if(bol>0) {
                    PrintWriter out=response.getWriter();                                           
                    out.flush();                                                                    
                    out.print("<script>");                                                          
                    out.println("alert('添加DVD信息成功!!!')");                                           
                    out.print("window.location.href='ProductServlet?method=toAddView&currentPage=");
                    out.print(list.get(3));    /*第四个数下标为3表示主页的页数*/                                                     
                    out.print("'</script>\");");                                                    
                    out.close();                                                                    
                }else {
                    PrintWriter out=response.getWriter();
                    out.flush();
                    out.print("<script>");
                    out.println("alert('很抱歉,添加DVD失败,请检查填入信息是否正确!!!')");
                    out.println("history.back();");
                    out.println("</script>");
                    out.close();
                }
            }
            else if(list.get(4).equals("EMPTY")){
                PrintWriter out=response.getWriter();
                out.flush();
                out.print("<script>");
                out.print("window.location.href='ProductServlet?method=toAddView';");
                out.println("</script>");
                out.close();
            }
        }
    protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
    }

    五.结果展示

    展开全文
  • 最近在学习java web,在练习DVD信息管理系统时一直对照片上传问题的处理感到非常棘手,在我的仔细研究和钻研下,终于完美解决...然后将图片的项目路径储存到数据库中,以便后面展示图片进行读取图片信息。 第一...
  • SSM 上传图片到数据库

    千次阅读 2018-07-05 23:45:47
    1.需要的包如下: a.commons-fileupload-1.3.2.jar b.commons-io-2.5.jar 2.文件上传的配置:(spring mvc.xml中进行相关配置) &lt;bean class="org.springframework.web.multipar...
  • 这里演示如何在MVC WEB应用程序如何上传图片到数据库以及如何在WEB页面上显示图片。数据库表对应整个Model类,不单图片数据一个字段,我们从数据表的定义开始: CREATE TABLE [dbo].[Products] ( [ProductID] ...
  • 数据库取出字符数组,输出页面 @RequestMapping ( "reagentImage" ) public void reagentImage (String rea_id,HttpServletResponse resq) throws IOException{ Reagent reagent = reagentservice...
  • 上传图片到数据库

    2010-07-27 22:50:00
    public partial class UploadImageToSQL : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected int FileLength = 0; //记录文件长度变量 protected ...
  • 大部分人的图片上传都是保存一个路径到数据库,这样在插入时确实快,也符合web的特点,但是在删除时就很麻烦,需要找到文件并删除,该代码能够把代码直接存入数据库,删除时一并删除。请注意:这样的话数据库大小会...
  • 这里,先将文件流复制文件项目临时目录WEB-INF/temp;文件使用完毕,删除之; 项目中用了下面几点: 解压zip、rar文件; 临时文件存放,使用完毕删除之; 对压缩包中的图片进行裁剪,生成预览图,并保存; ...
  • ASP(Active Server Pages)是Microsoft很早就推出的一种WEB应用程序解决方案,也是绝大多数从事网站开发人员很熟悉的一个比较简单的编程环境。通过ASP我们可以创建功能强大的动态的WEB应用程序。ASP虽然功能很强大,...
  • 大部分人的图片上传都是保存一个路径到数据库,这样在插入时确实快,也符合web的特点,但是在删除时就很麻烦,需要找到文件并删除,该代码能够把代码直接存入数据库,删除时一并删除。请注意:这样的话数据库大小会...
  • ASP(Active Server Pages)是Microsoft很早就推出的一种WEB应用程序解决方案,也是绝大多数从事网站开发人员很熟悉的一个比较简单的编程环境。通过ASP我们可以创建功能强大的动态的WEB应用程序。ASP虽然功能很强大,...
  • <h2>java web 上传图片到项目目录并将文件路径放到Oracle数据库 ()%>/InsertServlet" enctype="multipart/form-data" onsubmit="return checksubmit()" > (0);"> (jpg|jpeg|png|gif)$:只能上传jpg|gif|...
  • using System;using System.Collections;using System.Configuration;using System.Data;...using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;usi...
  • servlet里面有一个request.getPart()方法,通过这个文件可以获得图片,前提是你的servlet版本必须是3.0以上+tomcat7,具体参考以下@WebServlet("/articleManage")@MultipartConfig(maxFileSize = 1024 * 1024 * 10)/...
  • 上传图片并保存到数据库

    千次阅读 2014-01-12 16:59:34
    上传图片并保存到数据库 seam给我们提供了 s:fileUpload 标签以完成文件上传功能.使用该标签时,要在web.xml中声明一个Seam的过滤器: [html] view plaincopyprint? filter>   filter-name>Seam ...
  • webuploader结合php实现图片上传到本地和保存数据库,核心功能是以下三点:一、上传前图片预览二、上传图片到本地文件夹三、上传图片路径和图片对应的设备编号到mysql数据库Webupload1、由Baidu WebFE(FEX)团队开发...
  • 图片上传是指客户端通过Web应用程序将本地图片资源传输服务器上。在客户端需要显示图片时,服务器端将图片通过网络以流的形式发送给客户端,然后利用不同的形式显示图片。掌握图片上传和读取的原理,可以帮助大家...
  • 图片上传到数据库

    千次阅读 2004-08-23 10:20:00
    图片上传到数据库 [2004-4-28] [form web]√无形☆☆☆☆☆代码如下:upload.htm 上传页面 get.asp 处理浏览器中送来的数据response.buffer=trueformsize=request.totalbytes formdata=re

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 648
精华内容 259
关键字:

web上传图片到数据库