精华内容
下载资源
问答
  • 数据库为MySQL,项目直接可用,把原文件的字节取出来进行异或运算加密,再把加密后的乱码字节保存到数据库中,对任意一种文件都有效,密钥为一段字符串,可自定义,加密与解密的密钥保持一致即可。
  • java保存文件到数据库

    热门讨论 2010-04-18 11:32:28
    文件以二进制方式写入数据库,并将其读出还原。 数据库字段image
  • Java上传文件到数据库

    千次阅读 2016-02-29 20:22:30
    Java上传文件到数据库  首先在开始本文之前推荐一篇我非常喜欢的博主——孤傲苍狼的一篇相关博文。  JavaWeb学习总结(五十)——文件上传和下载   http://www.cnblogs.com/xdp-gacl/p/4200090.html  本文主要...

                                                                              Java上传文件到数据库

         首先在开始本文之前推荐一篇我非常喜欢的博主——孤傲苍狼的一篇相关博文。

              JavaWeb学习总结(五十)——文件上传和下载 

              http://www.cnblogs.com/xdp-gacl/p/4200090.html

             本文主要介绍如何将文件上传到服务器,并以二进制字符流的形式存入数据库。

              初始准备,MySQL数据库,新建表test,添加字段longblob字段。

              1. 页面代码:closedLoopInfo.jsp

    <%@ page contentType="text/html; charset=utf-8" language="java"
    	import="java.sql.*" errorPage=""%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
    <%
        String path = request.getContextPath();
        // 获得本项目的地址(例如: http://localhost:8080/MyApp/)赋值给basePath变量    
        String basePath = request.getScheme() + "://"
    			+ request.getServerName() + ":" + request.getServerPort()
    			+ path + "/";
        // 将 "项目路径basePath" 放入pageContext中,待以后用EL表达式读出。    
        pageContext.setAttribute("basePath", basePath);
    %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    
    <script type="text/javascript" src="<%=basePath%>static/js/jquery.min.js"></script>
    <script src="<%=basePath%>static/js/My97DatePicker/WdatePicker.js"></script>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>test</title>
    <script type="text/javascript">
       function CheckFile(obj) {
    		var filname = $(".fil").val();
    		var array = new Array('pdf', 'xlsx', 'docx', 'txt', 'pptx', 'jpg',
    				'jpeg', 'xls', 'doc'); //可以上传的文件类型
    		var fileContentType = obj.value.match(/^(.*)(\.)(.{1,8})$/)[3]; //这个文件类型正则很有用
    		var isExists = false;
    		for ( var i in array) {
    			if (fileContentType.toLowerCase() == array[i].toLowerCase()) {
    				isExists = true;
    				alert("文件类型正确");
    				return true;
    			};
    		}
    		if (isExists == false) {
    			obj.value = null;
    			alert("上传文件类型需为pdf,xlsx,docx,txt,pptx,jpg,jpeg,xls,doc!");
    			return false;
    		}
    		return false;
    	}
    </script>
    </head>
    
    <body>
    	<div class="main" style="background-color:#e4e4e4;">
    		<table class="tab">
    			<tr style="height:50px;">
    				<td></td>
    				<td style="text-align:center;vertical-align:middle;"><label
    					style="align:center;width:200%;border-style:solid;border-color:#B0B0B0;border-width:thin;">方案附件上传:</label>
    				</td>
    				<td></td>
    				<td>
    				  <form id="fieForm" method="post" enctype="multipart/form-data" action="<%=basePath%>uploadQuestionFile.do" >
        	            <div class="bmbut" id="bmbut1">
        	              <input class="fil" name="single" type="file" οnchange="CheckFile(this)"/>
                          <input class="subm" type="submit" value="上传" />
                        </div>
                      </form>
                    </td>
    				<td></td>
    				<td></td>
    			</tr>
    		</table>
    	</div>
    </body>
    </html>
            2.附件上传(uploadQuestionFile.do)

       // 获取本地第二个磁盘绝对路径,用来存取临时文件
        public String getDisk() {
    	String result = "";
    	int count = 0;
    	for (File f : File.listRoots()) {
    	    result = f.getAbsolutePath();
    	    count++;
    	    if (count == 2)
    		break;
    	}
    	return result;
        }
        
        // 附件上传
        @SuppressWarnings("rawtypes")
        @RequestMapping("uploadQuestionFile.do")
        public String uploadQuestionFile(HttpServletRequest request)
    	    throws ServletException, IOException {
    	boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    	if (isMultipart) {
    	    DiskFileItemFactory factory = new DiskFileItemFactory();
    	    // factory.setSizeThreshold(1024 * 10);
    
    	    // 设置存放临时文件的目录,web根目录下的ImagesUploadTemp目录
    	    // factory.setRepository(new File("f:\\test"));  // 临时文件
    
    	    // 用上面的工厂实例化上传组件,
    	    ServletFileUpload upload = new ServletFileUpload(factory);
    
    	    // 设置最大上传大小 10M
    	    upload.setSizeMax(1024 * 1024 * 5);
    	    String name = "";
    	    try {
    		List items = upload.parseRequest(request); // 得到所有FileItem
    		// 上传文件的个数
    		Iterator iter = items.iterator();
    		
    		// 循环处理所有文件
    		while (iter.hasNext()) {
    		    FileItem item = (FileItem) iter.next();
    		    System.out.println("Item:" + item);
    		    // 判断是否是表单元素(<input type="text" />单选,多选等)
    		    if (!item.isFormField()) {
    			// 得到文件的名称
    			name = item.getName();
    			// 文件长度
    			//long size = item.getSize();  // 过滤大小
    			if (name == null || "".equals(name.trim())) {
    			    // 未选择上传文件
    			    continue;
    			}
    			// 以下为文件名处理,将上传的文件保存在项目所在目录下。
    			// 获取文件名字符串的长度
    			// int end = name.length();
    			// 返回在此字符串中最右边出现的指定子字符串的索引。
    			int begin = name.lastIndexOf("\\");
    
    			// int start = name.lastIndexOf(".");
    			// 输出上传文件类型,此处可以进行类型的过滤
    			//
    			// System.out.println(application.getRealPath("/js")+System.getProperty("file.separator")+name.substring(begin
    			// + 1));
    			// File file = new File("f:\\"+name.substring(begin + 1,
    			// end));
    			
    			File file = new File("");
    			file = new File(getDisk()+ name.substring(begin + 1));
    			item.write(file);
    			System.out.println("1.name:" + name);
    			System.out.println("2.file:" + file);
    			byte[] buffer = null;
    			try {
    			    FileInputStream fis = new FileInputStream(file);
    			    ByteArrayOutputStream bos = new ByteArrayOutputStream(
    				    1024);
    			    byte[] b = new byte[1024];
    			    int n;
    			    while ((n = fis.read(b)) != -1) {
    				bos.write(b, 0, n);
    			    }
    			    fis.close();
    			    bos.close();
    			    buffer = bos.toByteArray();
    			} catch (Exception e) {
    			    e.printStackTrace();
    			}
    			FileRequest filerequest = new FileRequest();
    			filerequest.setBytes(buffer);
    			filerequest.setFileName(name);
    			filerequest.setAppName("apiplatform");
    			System.out.println("3.赋值前参数filerequest:" + filerequest);
    			System.out.println("4.参数filerequestbuffer:" + buffer);
    			System.out.println("5.参数BufferSize:" + buffer.length);
    			System.out.println("6.参数filerequestFileName:" + name);
    			System.out.println("7.已赋值Bytes:"+ filerequest.getBytes());
    			System.out.println("8.已赋值FileName:"+ filerequest.getFileName());
    			System.out.println("9.已赋值AppName:"+ filerequest.getAppName());
    			System.out.println("最终参数filerequest:" + filerequest);
    			
    			fileBuffer = buffer;
    			
    			// 是否调用成功
    			// 返回的信息,如果成功返回success,如果失败返回错误信息
    			// 文件上传成功,会返回一个文件的唯一标识
    			// 格式类似于:group1;M00/00/00/CooWNFYJ6kaAWxe_ACrCAeZ2krc847.zip
    			// 将这个结果保存到自己的数据库或其他地方,在以后查找文件时用
    			if (file.getPath().endsWith(".xlsx")) {
    			    System.out.println("文件类型为xlsx");
    			} else if (file.getPath().endsWith(".doc")) {
    			    System.out.println("文件类型为doc");
    			} else if (file.getPath().endsWith(".pdf")) {
                                System.out.println("文件类型为pdf");
    			} else if (file.getPath().endsWith(".txt")) {
    			    System.out.println("文件类型为txt");
    			} else if (file.getPath().endsWith(".pptx")) {
    			    System.out.println("文件类型为pptx");
    			} else if (file.getPath().endsWith(".docx")) {
    			    System.out.println("文件类型为docx");
    			} else {
    			    request.setAttribute("Error", "文件格式不正确");
    			    System.out.println("文件格式不正确");
    			}
    			file.delete();
    		    }
    		}
    
    	    } catch (FileUploadException e) {
    		e.printStackTrace();
    	    } catch (Exception e) {
    		// 处理文件写入时的异常
    		e.printStackTrace();
    	    }
    	}
    	return "closedLoopInfo";
        }
        
    展开全文
  • java实现将文件存储到数据库前言程序架构说明实现思路代码实现1.controller层主要代码2.Service层3.Dao层4.Mapper映射文件 前言 最近在工作中涉及了一个将文件存储到mysql数据库中,实现文件存取操作的业务场景,...

    前言

    最近在工作中涉及到了一个将文件存储到mysql数据库中,实现文件存取操作的业务场景,本文将简单的对文件存储数据库的过程进行描述及实现

    程序架构说明

    采用的是springboot、mybatis实现对文件的转换与存储。

    实现思路

    1、从前端选择获取到需要上传的文件
    2、文件在Controller控制层将文件的类型和文件名称进行分割
    3、将文件转换为base64,然后在转换为String,作为大文本存入数据库

    代码实现

    这里只贴出部分代码,代码的各个层都可以通过工具自动生成,文件上传存储后,同样的操作可以将文件从数据库中取出,然后在逆向转换回去即可,转换过程中在从数据库中取出文件名和文件后缀拼接,这里不再贴出代码,如果有刚入门的朋友不懂的话可以私聊。

    1.controller层主要代码

    Template 实体类比较简单就不贴出代码了,根据需要自行编写即可

        @PostMapping("/post")
        //多个参数的传递
        public int insertData(@RequestParam(value = "file") MultipartFile file,
                              @RequestParam(value = "name") String name) {
    
            Template template = new Template();
            //日期设置
            Date date = new Date();
            Timestamp timeStamp = new Timestamp(date.getTime());
    
            //文件处理
            if (file.isEmpty()) {
                log.info("上传失败,请选择文件");
            }
    
            String originalFilename = file.getOriginalFilename();
            //如果用“.”作为分隔的话,必须是如下写法,String.split("\\."),这样才能正确的分隔开,不能用String.split(".");
            String[] split = originalFilename.split("\\.");
            String fileName = split[0];
            String fileSuffix = split[1];
            System.out.println("文件大小:" + file.getSize() + "文件名称:" + fileName + "文件后缀:" + fileSuffix);
            byte[] bytesByFile = getBytesByFile(file);
    
            //测试文件读取并写入到指定位置
            //转换文件为String
            Base64.Encoder base64 = Base64.getEncoder();
            String s = base64.encodeToString(bytesByFile);
            //参数设置
            template.setTemplateId("abc1235");
            template.setDeleted(0);
            template.setUsed(0);
            //获取postman中body 传入的值
            template.setName(name);
            template.setApplicant("董xx");
            template.setApprovelStatus(0);
            template.setVersion("v1.0");
            template.setCreateTime(timeStamp);
            template.setTemplateData(s);
            Template insert = templateService.insert(template);
            System.out.println(insert);
            return 1;
        }
    

    2.Service层

        /**
         * 新增数据
         *
         * @param template 实例对象
         * @return 实例对象
         */
        @Override
        public Template insert(Template template) {
            this.templateDao.insert(template);
            return template;
        }
    

    3.Dao层

        /**
         * 新增数据---更新用
         *
         * @param template 实例对象
         * @return 影响行数
         */
        int insert(Template template);
    

    4.Mapper映射文件

        <!--新增所有列-->
        <insert id="insert" keyProperty="id" useGeneratedKeys="true">
            insert into fileupload.template(template_id, deleted, used, name, applicant, approver, approvel_status, approval_remark, delete_remark, upload_remark, refuse_reason, version, create_time, last_update_time, template_data)
            values (#{templateId}, #{deleted}, #{used}, #{name}, #{applicant}, #{approver}, #{approvelStatus}, #{approvalRemark}, #{deleteRemark}, #{uploadRemark}, #{refuseReason}, #{version}, #{createTime}, #{lastUpdateTime}, #{templateData})
        </insert>
    
    展开全文
  • java实现图片文件存储到数据库

    万次阅读 热门讨论 2017-02-26 17:41:39
    3、将本地文件保存到数据库,在我的F:\eclipse\workspace\uploadpic\pic文件夹中有一张照片fanfan.jpg public class UploadPic { private static final String URL= "jdbc:mysql://127.0.0.1:3306/...

    参见:http://www.cnblogs.com/kakag/p/3145140.html

    1、数据表:

    create table tb_file(
        -> fid SMALLINT AUTO_INCREMENT NOT NULL PRIMARY KEY,
        -> fname VARCHAR(50) NOT NULL,
        -> fcontent LONGBLOB NOT NULL );

    注意:这里fcontent使用longblob类型;Blob是一个可以存储二进制文件的容器。刚开始我使用的是blob类型,但是在上传一张431.27kb的图片时,程序报错“data is too long”,后来Google到这里:
    http://stackoverflow.com/questions/3503841/jpa-mysql-blob-returns-data-too-long
    发现
    TINYBLOB: maximum length of 255 bytes
    BLOB: maximum length of 65,535 bytes(63.99kb)
    MEDIUMBLOB: maximum length of 16,777,215 bytes(16383.99kb)
    LONGBLOB: maximum length of 4,294,967,295 bytes(4194303.99kb)
    所以当我使用blob时,最大容量只有64kb,所以在这里改为LONGBLOB类型

    2、编写图片数据流存储的工具类:

    public class ImageUtil {
        private static File file=null;
    
        public static FileInputStream getImageByte(String infile) throws FileNotFoundException{
            FileInputStream imageByte=null;
            file=new File(infile);
            imageByte=new FileInputStream(file);
            return imageByte;
        }
    }

    3、将本地文件保存到数据库,在我的F:\eclipse\workspace\uploadpic\pic文件夹中有一张照片fanfan.jpg

    public class UploadPic {
        private static final String  URL="jdbc:mysql://127.0.0.1:3306/uploadpic";
        private static final String USER="root";
        private static final String PASS="1234";
        public static void main(String[] args) throws SQLException, IOException {
            try {
                Class.forName("com.mysql.jdbc.Driver");
                Connection conn = (Connection) DriverManager.getConnection(URL,USER,PASS);
                InputStream in=ImageUtil.getImageByte("F://eclipse/workspace/uploadpic/pic/fanfan.jpg");
                String sql="insert into tb_file(fname,fcontent) values(?,?)";
                PreparedStatement ptmt=conn.prepareStatement(sql);
                ptmt.setString(1,"凡凡");
                ptmt.setBinaryStream(2, in,
                        in.available());
                ptmt.execute();
    
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
    }

    执行之后,在数据库中有:
    这里写图片描述

    没错,宝宝的凡凡哈哈!

    展开全文
  • java 文件上传到数据库为blob

    千次阅读 2012-10-23 20:33:18
    现在数据库建表, 让后写一个测试类 经本人测试绝对可用 import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.sql.Connection; import java.sql....

    其实也没有什么,就拿mysql为例;

    现在数据库建表,

    让后写一个测试类

    经本人测试绝对可用

    import java.io.ByteArrayInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;


    /**
    *在mysql数据库里成功测试,并且发现mysql的blob数据库不支持存储图片,只支持
    *65535字节以下的本本数据存储。不过其他的大型数据库是支持储存图片的.
    */
    public class InsertBlob {

    public static void main(String[] args) {
    try{
    File f = new File("C:\\bsmain_runtime.log");
           long length = f.length();
           FileInputStream fis = new FileInputStream("C:\\bsmain_runtime.log");        
           byte[] imageBytes=new byte[(int)length];       
           int byteLength=fis.read(imageBytes, 0, (int)length);        
           ByteArrayInputStream bais=new ByteArrayInputStream(imageBytes);        

    Class.forName("com.mysql.jdbc.Driver");
    Connection con=DriverManager.getConnection("jdbc:mysql://localhost/test","root","java");
    PreparedStatement pstmt = null; 

    /*
    create table mypicture 
    ( name varchar(20),
        image blob );    
    */

    pstmt = con.prepareStatement("insert into mypicture(name,image) values(?,?)");
    pstmt.setString(1, "001");
    pstmt.setBinaryStream(2,bais,byteLength);
    pstmt.executeUpdate();




    System.out.println("file length:"+length);
    System.out.println("byte length:"+byteLength);
    System.out.println("插入成功.");
    }catch(Exception e){
    e.printStackTrace();
    }


    }




    }

    展开全文
  • // 到数据库的输出流 OutputStream outStream = blob.getBinaryOutputStream(); // 这里用一个文件模拟输入流 InputStream fin = new FileInputStream(new File(fileName)); // 将输入流写输出流 byte[] b = new ...
  • Java 图片保存到数据库

    千次阅读 2019-06-17 19:52:46
    本实例要实现的是上传图片同时带有字段保存到数据库,首先我们需要引入commons-io-2.5.jar和commons-fileupload-1.3.2.jar包,其次最为重要的是中jsp页面的表单中from务必要有这两个属性为method="post"和 enctype=...
  • java读取TXT文件保存到数据库

    千次阅读 2017-01-18 15:37:45
    Java读取txt文件内容。可以作如下理解: 首先获得一个文件句柄。File file = new File();file即为文件句柄。两人之间连通电话网络了。接下来可以开始打电话了。 通过这条线路读取甲方的信息:new ...
  • Java文件、图片路径保存到数据库

    万次阅读 2017-08-23 15:46:01
    1.如果直接把文件、图片保存到数据库,存取效率非常低,而且大量消耗数据库存储空间,因此我们只需要保存文件路径即可。2.通过文件选择器获取文件的路径3.执行SQL语句将文件路径添加到数据库。4.代码演示读取文件5....
  • java存储图片到数据库

    千次阅读 2012-05-16 15:58:38
    2 要向数据库存储二进制的文件一定要把要存储的数据转换成二进制流 废话就不多说了,大家看看代码很容易明白,先来看一个app程序,当然首先您要在数据库中先建立一个用于保存图片的表和相应的列,数据格式为blob ...
  • ## 情况是这样的,代码用的utf-8,数据库用的gbk结果代码中将 • 该符号保存 ## 到数据库出现乱码,请问除了换数据库字符集还有什么处理方式。
  • 主要介绍了Java实现从数据库导出大量数据记录并保存到文件的方法,涉及Java针对数据库的读取及文件写入等操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 把图片和文本文件存储到数据库 点击连接->C3P0连接数据库 请先查看C3P0连接数据库,再查看下面代码 PictureAndTxtToMysql.java package com.zr.demo; import java.io.FileInputStream; import java.io....
  • java对象序列化并存储到文件数据库

    万次阅读 热门讨论 2017-04-25 09:15:45
    Java中要实现将对象保存...下面我将以保存到文件保存到mysql来进行解析。先给出序列化类的定义:package model; import java.io.Serializable; import java.util.Date; /* * 实现可序列化接口 */ public class P...
  • java导入txt到数据库数据库导出txt

    热门讨论 2010-08-11 10:16:58
    里面没包 只有几个主要的类。。。 主要是怕以后忘记,先保存下来而以 java导入txt到数据库数据库导出txt
  • java读取文件将内容保存到数据库

    千次阅读 2020-09-27 20:34:13
    import java.io.File; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import ...
  • java实现文件上传到数据库

    万次阅读 2015-03-30 21:09:15
    欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: ...导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
  • ![图片说明](https://img-ask.csdn.net/upload/201710/26/1509002015_85475.png) 该图片只能将id保存到mongodb数据库中,其他字段不能保存。 那位大神知道原因。
  • servlet 上传文件保存到数据库
  • 望各位大侠赐教
  • 您的办公室文件对您重要吗? 您的办公室文件是否保存在其他计算机上? 所有人都可以使用您的办公室文件吗... 将文件存储到数据库中。 进行一次/多次识别。 仅授权用户可访问的基于网络的软件。 数据库复制。 分配权限。
  • java实现多文件上传并保存到数据库

    千次阅读 2018-07-25 15:57:43
    好久没有写博客了,今天项目里需要一个功能,即前台实现多图片上传列表,并后台保存到mysql中。前台后台一起弄,用了半天时间终于搞定了。 实现:前台Layui实现;后台servlet+hibernate 不多废话,先上图 ...
  • 需求:有一个很大的txt文件(1,000,000条数据),从txt中读取有用数据库保存到Oracle数据库中 利用Java实现: 1、加载文件后一行一行读取 2、数据库连接后按行插入到数据库 package com.test.IF.service; ...
  • photocam-jsf-postgresql 使用网络摄像头拍照并保存到数据库,然后上传文件保存到数据库

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 579,461
精华内容 231,784
关键字:

java文件存储到数据库

java 订阅