/**   * 下载语音   * Remarks:   * @throws Exception   */

public void downloadYuyin() throws Exception {

String voiceId = getRequest().getParameter("voiceId");

InputStream inputStream = voiceService.findInputByVoiceId(voiceId);

String realPath1 = getRequest().getRealPath("/") + "/upload/voice.pttly";

File f2 = new File(realPath1);   FileOutputStream dos = new FileOutputStream(f2);  // 生成带缓冲区的二进制 写入流

OutputStream dosss = new DataOutputStream(new BufferedOutputStream(  new FileOutputStream(f2)));

// 创建文件读取缓冲区

byte[] buf = new byte[2048];

// 读进 缓冲区    dos.write(toByteArray(inputStream));

// 把文件数据写入文件

dos.close();//关闭流

String realPath = getRequest().getRealPath("/") + "/upload/voice.pttly";

File file = new File(realPath);

String filename = file.getName();

InputStream fis = new BufferedInputStream(new FileInputStream(     realPath));

byte[] buffer = new byte[fis.available()];   fis.read(buffer);   fis.close();   // 清空

response   getResponse().reset();

// 设置response的Header

getResponse().addHeader("Content-Disposition", "attachment;

filename="+ new String(filename.getBytes()));

//getResponse().addHeader("Content-Disposition", "attachment;filename="+"yuyin.pttly");

getResponse().addHeader("Content-Length", "" + file.length());

OutputStream toClient = new BufferedOutputStream(getResponse()     .getOutputStream());

getResponse().setContentType("application/octet-stream");

toClient.write(buffer);

toClient.flush();

toClient.close();

}

//service

public InputStream findInputByVoiceId(String voiceId) {
  return voiceDao.findInputByVoiceId(voiceId);
 }

//dao

@SuppressWarnings("rawtypes")
 public InputStream findInputByVoiceId(String voiceId) {
  String sql = "SELECT voice_id,call_user_id,group_id,UnitId,participate_user_id,call_type,starttime,endtime,voicedata FROM Voice_Info WHERE voice_id="+voiceId;
  SQLQuery sqlQuery = createSQLQuery(sql.toString());
  List lists = sqlQuery.list();
  InputStream input = null;
  for(int i=0;i<lists.size();i++){
   Object[] objects=(Object[])lists.get(0);
   if(objects != null){
    SerializableBlob o = (SerializableBlob) objects[8];
    try {
     input = o.getBinaryStream();
    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
  }
  return input;
 }

读取MySQL存储二进制的语音、图片(Blob类型)的更多相关文章

  1. mysql 存储二进制数据

    晚上小研究了下MySQL存储于读取二进制数据的功能.关键步骤为以下三点: 最重要的一点:存储二进制数据的表的类型需要是blob类型(按长度不同分为tiny, media, long) 插入二进制数据时 ...

  2. python+ mysql存储二进制流的方式

    很多时候我们为了管理方便会把依稀很小的图片存入数据库,有人可能会想这样会不会对数据库造成很大的压力,其实大家可以不用担心,因为我说过了,是存储一些很小的图片,几K的,没有问题的! 再者,在这里我们是想 ...

  3. python 读取mysql存储的文件路径下载文件,内容解析,上传七牛云,内容入es

    #!/usr/bin/env python # -*- coding: utf-8 -*- import ConfigParser import json import os import re fr ...

  4. oracle 向表中插入BLOB类型数据

    提示: 待插入图片必须保存到oracle主机路径上. 步骤: 1.SYSDBA权限用户创建图片所在目录 CREATE OR REPLACE DIRECTORY TEST_DIR AS 'C:\Pict ...

  5. MySQL的BLOB类型(解决mysql不支持mb4编码的时候存储emoji表情问题)

    今天在存储emoji表情的时候,发现无法存储,mysql版本太低也没办法使用uft8mb4格式编码,只能将数据字段设置为blob BLOB是一个二进制大对象,可以容纳可变数量的数据.有4种BLOB类型 ...

  6. mysql存储blob限制

    一.Mysql存储类型分类: 1.blob:二进制大对象(字节流),可以用来存储图片.视频等,没有字符集的说法 2.text:文本大对象(字符流),存储大型字串,有字符集的说法 3.二者使用时不能指定 ...

  7. BLOB类型的字段用于存储二进制数据

    MySQL中,BLOB是个类型系列,包括:TinyBlob.Blob.MediumBlob.LongBlob,这几个类型之间的唯一区别是在存储文件的最大大小上不同. MySQL的四种BLOB类型类型 ...

  8. 第 3 章 MySQL 存储引擎简介

    第 3 章 MySQL 存储引擎简介 前言 3.1 MySQL 存储引擎概述 MyISAM 存储引擎是 MySQL 默认的存储引擎,也是目前 MySQL 使用最为广泛的存储引擎之一.他的前身就是我们在 ...

  9. MySQL存储引擎与数据类型

    1 数据存储引擎 存储引擎的概念是MySQL的一个特性,它指定了表的类型(诸如表怎样存储与索引数据.是否支持事务.外键等),表在计算机中的存储方式. 1.1 MySql支持的数据存储引擎 查看引擎信息 ...

随机推荐

  1. 【echarts3】--1 简单入门

    echarts3 相信大家都了解吧,是百度研发的 ECharts 特性介绍 ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8 ...

  2. Mysql(六):数据备份、pymysql模块

    一 IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具 下载链接:https://pan.baidu.com/s/1bpo5mqj 掌握: #1. 测试+链接 ...

  3. Elasticsearch安装使用

    在网上有很多那种ES步骤和问题的解决 方案的,不过没有一个详细的整合,和问题的梳理:我就想着闲暇之余,来记录一下自己安装的过程以及碰到的问题和心得:有什么不对的和问题希望及时拍砖. 第一步:环境 li ...

  4. uploadify上传文件(2)--基础语法

    隔了好久,因为最近搬家,离开从小生活的城市,来到杭州.找工作.找房子等诸多事宜耽误了这篇文章许久.今天难得闲暇在旅馆中完成uploadify上传文件系列的第二篇--uploadify使用的基础语法. ...

  5. linux主机名为bogon的原因及修改方法

    今天登录linux,发现主机名是bogon,虽然不影响使用,但是看着很不爽,于是想了解一下,为什么会发生这种情况,在csdn上找了到了一个文章,原文如下: 起因:公司网络接口做了接口认证,虚拟机桥接至 ...

  6. H3C虚拟化之IRF

    SA system-view irf domain 10 irf member 1 ren 1 y int ten 1/0/50 shu qu irf-port 1/1 port group int ...

  7. Spark SQL 1.3测试

    Spark SQL 1.3 参考官方文档:Spark SQL and DataFrame Guide 概览介绍参考:平易近人.兼容并蓄——Spark SQL 1.3.0概览 DataFrame提供了一 ...

  8. 微软Surface Book推送Windows 10新固件更新:增强系统和电池

    微软公司最近为Surface Book推出了新的Windows 10固件系统和驱动的更新,并且以MSI的文件格式上传到了微软的下载中心里面.此次更新的内容主要是改进了Surface Book的系统的稳 ...

  9. RTlinux3.2安装

    ( 1 ).前言 2003 年以后, fmslabs 的 RTLinux Free 版本为 3.2Pre ,和以前的 RTLinux 3.1 比较,不再需要必须从 2.4.4 的内核上安装. RTLi ...

  10. linux下面的fd限制

    如果不考虑内存大小的限制,在linux下面,fd (即file descriptor)的数量来自2个限制(阈值).其一:是操作系统的限制.这个限制主要是在linux内核中,我们知道,用户程序的fope ...