JAVA读取图片当回给前端,Oracle数据库存储某张图片的相对路径,在服务端这边怎么引用,并返回给客户端。服务端指得是本人本人建立的We...

这边的服务端是WebService服务端。就都是Java程序,然后有结合的Hibernate。这些其实不重要。就是想问,本人通过select语句获得到这个路径之后,在本人的服务端这边,也就是一个Java文件,要怎么处理,然后能返回给客户端。

在数据库里存的是路径的这个情况下,能返回给客户端的,就本人现在所知的,有两种情况,第一种是返回一个字符串,字符串的内容是那张图片的完整路径,当然,是客户端能访问到的路径,原因是现在都在本人的计算机里,所以是都能访问的。

第二种情况,就是在服务端获得了这个路径之后,对这个图片进行base64的解码(还算编码),然后再发送给客户端,然后在客户端那边处理。

现在本人想问就是,第一种方法,本人怎么获取到完整的路径,就是客户端也能访问到的路径。然后客户端在获得之后,又要怎么处理呢。就是获得字符串之后要怎么处理呢,。

第二种,就是获取到这个路径,然后肯定得得到绝对路径,再对其进行处理。这边又要怎么处理呢?   最好是来个简单的例子。

然后还想再问一下,假如是要直接将图片存到Oracle数据库里,就是通过放在数据类型为blob的字段里,又要怎么处理呢?  我们只能通过Java程序将图片文件放进去嘛?  那取的时候又要怎么取呢。  麻烦回答下。谢谢大家

解决方案

30

1  返回给用户一个http://xxx/xxx.jpg的url,浏览器可以打开。用户可以用浏览器打开,或嵌入你的页面返回给客户

2 jsp处理方法:处理参数,找到图像文件。读取图像文件,设置文件头中的ContentType,ContentLength,然后向输出流里写文件

resp.setContentType(fileContentType);

resp.setContentLength((int) new File(realPath).length());

try

{

BufferedInputStream bis = new BufferedInputStream(new FileInputStream(realPath));

BufferedOutputStream bos = new BufferedOutputStream(resp.getOutputStream());

byte[] bytes = new byte[4096];

int length = 0;

while ((length = bis.read(bytes)) != -1)

{

bos.write(bytes, 0, length);

}

bis.close();

bos.flush();

bos.close();

}

catch (IOException e)

{

e.printStackTrace();

}

}

30

直接返回前端页面一个url路径,页面就可以显示,你服务端所要做的工作就是获得图片服务器的IP地址以及数据库中存的相对路径,拼接好返回给前端页面。

至于你最后说的把图片直接存在数据库,建议你不要试。每个IT人员都在刚开始的时候被深深的教育过,不要这样做,数据库会爆炸,当然本人也没这么做过,所以后果也只是听人说。

20

引用:

现在是这样,本人做的不是JSP页面,所以也就是不是在前台直接展示。本人这边调用数据库的其实等于只是一个Java程序而已,就是Webservice,是能算作一个服务器端。所以没有那个什么这些标签。  都是纯JAVA页面。

那这样的情况下,能麻烦教下怎么获取到图片的位置么。 例如说本人返回给客户端的是一个字符串,这个字符串就代表着这个图片的绝对地址,在客户端肯定是得要使用绝对地址。那本人在服务器端,从数据库,选取到的肯定是一个相对地址,那相对地址之前的前缀怎么获取到。就是拼接的前面的一部分是什么地址。 怎么获取。

谢谢。

拼接前面的地址就是你图片服务器的IP地址啊,你的图片存在哪个服务器就写哪个地址,假如是直接存在应用服务器上的,那就是应用服务器的ip,这种服务器地址应该是配置好的,或许是配置文件、或许是配置表。  这个是你应该提前知道的,直接就拿过来用的。

20

两个事情:

1 返回url,servlet处理带参数(名称等等……)查询,返回结果,格式可以采用json

2 返回图片:还是servlet实现,get方法,传递图片ID或其他参数。根据参数查找到文件,使用本人前面给出的代码,输出出去,就可以在浏览器中看到图片(容易测试)

3 android客户端,httpclient读取,按http协议读取图片

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值