InputStream blobStream = cf.getContent().getBinaryStream();//文件内容是从Oracle Blob类型字段里取出来
怎样能将这个InputStream 写到页面了向用户展示文件内容?

解决方案 »

  1.   

    可以写。
    multipart/form-data指定用流来显示。后台代码的话自己百度下吧。一大堆
      

  2.   

    设置一下响应格式,应该就可以了,不过必须是jsp支持的格式
      

  3.   

    “multipart/form-data指定用流来显示”
    不懂不要装。multipart/form-data是用来从客户端向服务端上传时用的mime.
    要向页面输出你的binary内容要首选 知道它原来的是什么类型的内容。比如是image还是doc?
    知道了原来的类型可以输出相应的mime,然后内容直接输出去就行了。
      

  4.   


    数据是从服务器端的数据库来的,不是从客户端来的。类型是xml或者properties,写到页面的目的就是要让客户看到当前的配置文件的内容。
      

  5.   

    InputStream blobStream = cf.getContent().getBinaryStream();
    response.setHeader("Content-Disposition", "attachement;filename=a.xml;");
    response.setContentType("application/xml;charset=utf-8");
    byte[] buffer = new byte[10];
    int nbytes = 0;
    while ((nbytes = blobStream.read(buffer)) != -1){ out.print(buffer);
    }
    blobStream.close();我用的是这段代码,但是输出的是这些东西:
    [B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde
    而不是xml的内容。
      

  6.   

    楼主记住的是就是几乎需求都是可以的,只是实现的方式而已,很多时候,可以google,
      

  7.   

    如果你确信字段中存储的确实是文字,是否可以尝试在blobStream套一个Reader来读字符呢,如
    Reader reader = new InputStreamReader(blobStream);
    然后用read()方法读字节,用print写出试试看
      

  8.   

    你把字节数组当作字符串输出,当然输出的是这个数组的toString方法,当然是[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde
    这是正确的结果,如果不是这样那就不正常了。要把二进制内容正确输出应该是:InputStream blobStream = cf.getContent().getBinaryStream();
    response.setHeader("Content-Disposition", "attachement;filename=a.xml;");
    response.setContentType("application/xml;charset=utf-8");ServletOutputStream out = respone.getOutputStream(); //这前不能有getWriter的调用 
    byte[] buffer = new byte[10];
    int nbytes = 0;
    while ((nbytes = blobStream.read(buffer)) != -1){ out.write(buffer,0,nbytes);

    out.flush();
    blobStream.close();
      

  9.   

    byte[] buffer = new byte[10];这个缓冲开得也太小了。建立1024*x