目前公司要求写一个servlet接受四个数据,其中两个是BLOB数据类型,发送端是其它公司!我怎么接收呢?
期待解答,非常赶时间!
[b]问题补充:[/b]
谢谢throne212的回答! 我也觉得是这样!问题是那边需求文档就那么写的,问什么类型嘛,公司需求人员也不知道(我猜测是图片,或者视频文件吧)。上面那个头呢!自己也不知道怎么回事,只说:“你上网找吧,我也不明白!”不明白还催我...无语了。 我的意思他传个URL给我,我自己去解析那个地址把那个文件读出来转为BLOB存到数据库,头说我不知道,文档怎么写你就怎么做...
[b]问题补充:[/b]
Thanks! 2楼的回答就是我想做的! 但是如果不用servlet,用axis能做吗?用webservice能一次性接收多个这种大数据类型?
我大概明白了,估计是这个意思,就是客户给你一个URL,这个URL指定一个资源,有可能是图片或者视频,需要把这个资源以BLOB的方式存进数据库里面。
其实这应该是两个步骤,先或者这个资源的HTTP连接,然后存进数据库里面。下面我写了一个DEMO(下载JavaEye的logo放进我的数据库),你参考一下,可能对你有帮助。
[code="java"]
public static void main(String[] args) throws Exception {
URL url = new URL("http://www.iteye.com/images/logo.gif?1212054226");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.connect();
InputStream in = conn.getInputStream();
saveBlob(in,in.available());
in.close();
}
static void saveBlob(InputStream in,int len) throws Exception{
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123");
PreparedStatement ps = conn.prepareStatement("insert into user_table(id,name,photo) values(?,?,?)");
ps.setInt(1, 100);
ps.setString(2, "testUser1");
ps.setBinaryStream(3, in,len);
int rst = ps.executeUpdate();
System.out.println("insert rst = "+rst);//1就代表正确了
ps.close();
conn.close();
}
[/code]
我很好奇,servlet如何接收BLOB数据?
BLOB说到底就是二进制流,你可以按照输入流读到一个byte的buffer里面,然后在转换成BLOB。
web service 本质上来讲也是使用的http协议,所以你也可以类似的这样来做。具体如何写,还要看看的web service的接口是怎样提供的了。应该还是没问题的。