开发者社区> 问答> 正文

java利用HttpURLConnection读取二进制并返回!

String urlStr ="http://192.168.1.111:8083/down/1.pdf";
URL url = new URL(urlStr);
conn = (HttpURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
//获取下载文件的总大小
fileSize = conn.getContentLength();
System.out.println("fileSize "+fileSize);
...文件保存

这样是能得到文件长度和下载的,但是我的pdf文件是作为二进制存储到oracle数据库中的,而我用上边这个方法的话必须要先从服务器把数据库中的二进制保存成文件,然后再把文件地址传入上边的方法,才能成功下载,本来以为客户端发送连接请求,服务器收到请求后,先用输入流从数据库读出数据,然后输出流输出,客户端就会收到数据流,可是试了下返回的conn.getContentLength()都为-1,读取不到HttpURLConnection内容的长度!难道是返回类型不对吗?我应该用什么类型返回或者输出?求各位大侠不吝赐教,小弟万分感谢!简单点就是服务器收到请求后直接从oracle库中取出数据流然后返回给安卓客户端接收并保存成文件!

展开
收起
小旋风柴进 2016-03-05 15:11:34 4917 0
1 条回答
写回答
取消 提交回答
  • 你的Conn是URL,如果文件数据还在数据库上,相当于说文件没有建立,URL指向文件地址肯定也读不到数据。URL是定位到文件资源,要用url conn,就要有文件存在。要用数据库存的数据,只能用其他IO读取数据。

    2019-07-17 18:53:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载