java 中 blob转字符串?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 中 blob转字符串?相关的知识,希望对你有一定的参考价值。

java 中 blob转字符串?有无例子?
现在遇到的问题是:

BufferInputStream is=new BufferInputStream(blob.getBinaryStream())

byte [] by=new byte[大小?]
is.read(by);

现在想new1个byte类型,但大小似乎获取不到.
不知道有更好方法没有?

//字符串转blob
String str="哈哈哈哈哈哈";
java.sql.Blob bl=new SerialBlob(str.getBytes());
//blob转字符串
BufferedReader bf=new BufferedReader(new InputStreamReader(bl.getBinaryStream()));
String temp="";
StringBuffer sb=new StringBuffer();
while((temp=bf.readLine())!=null)

sb.append(temp);


System.out.println(sb.toString());
参考技术A ByteArrayOutputStream cache = new ByteArrayOutputStream();
byte[] buf = new byte[512];
int c = -1;

while(( c = is.read(buf)) != -1)
cache.write(buf, 0, c);


String result = new String(cache.toByteArray(), "你的字符集,可以不指定");
参考技术B BufferedInputStream bi = new BufferedInputStream(blob.getBinaryStream());
data= new byte[READ_BUFFER_SIZE];
for (int len = 0; (len = bi.read(data)) != -1;)
outfile+=new String(data,"GBK");
data= new byte[READ_BUFFER_SIZE];



在循环里面要清空data
因为read只是覆盖的读,而不是清空了读,所以要重新new bate[]
参考技术C 可以定义为数组,那个大小长度要一定,然后慢慢读取 参考技术D ReadInputStream去读,读出来的就只字符串

XMLHttpRequest 中 blob类型数据转text

景描述ajax接收的数据类型既有blob类型也有text时,不同的类型做不同的处理。如,当下载文件、图片等信息时候,需要字节流responseType = ‘blob‘,同时,如果后台有出错信息需要前台展示,此时需要字符类型responseType = ‘text‘。两个类型不能同时存在。

解决方案都用blob类型接收,然后将blob类型转text类型

实施blob类型无法直接转text类型,需要中间转换

          var blob = xhr.response;  //xhr.response -->blob 数据源
                if(blob.size < 100){      //此处是用来区分后台的数据源是文件、图片流,还是我们的告警信息,(如果是告警信息,size会很短)
                    var fr = new FileReader(); //FileReader可以读取Blob内容  
                    fr.readAsText(blob); //二进制转换成text
                    fr.onload = function (e) {  //转换完成后,调用onload方法
                        var result = fr.result;  //result 转换的结果

---------------------------------------------------------分隔线-----------------------------------------------------------------------------

知识点:

Ajax和XMLHttpRequest: ajax是一种技术方案,但并不是一种新技术。它依赖的是现有的CSS/HTML/Javascript,而其中最核心的依赖是浏览器提供的XMLHttpRequest对象,是这个对象使得浏览器可以发出HTTP请求与接收HTTP响应

FileTeader:用来把文件读入内存,并且读取文件中的数据。

 

以上是关于java 中 blob转字符串?的主要内容,如果未能解决你的问题,请参考以下文章

java oracle数据blob的操作

base64转文件(blob)遇到的一个问题

XMLHttpRequest 中 blob类型数据转text

Blob和Java对象的转换

如何在oracle中的blob字段下读取jpg格式文件保存

如何将 javascript 对象转换成 json字符串