我正在使用REST web服务,我可以将我的图像作为BLOB数据存储到mysql数据库。如何使用REST webservice在MySQL数据库中存储图像
有没有办法给这张图片的网址给客户端,以便他们可以访问这个图片?
我正在使用REST web服务,我可以将我的图像作为BLOB数据存储到mysql数据库。如何使用REST webservice在MySQL数据库中存储图像
有没有办法给这张图片的网址给客户端,以便他们可以访问这个图片?
是的。编写一个单独的端点命中数据库并用该映像进行响应。
正如Eric所说,您可以像创建端点一样来存储将图像返回给您的图像。重要步骤总结可能是:
从数据库中检索斑点(为MySQL):
Blob imageBlob = rs.getBlob("file");
InputStream binaryStream = imageBlob.getBinaryStream(1, imageBlob.length());
创建端点。您可以将InputStream作为实体返回:
@GET
@Path("/GetFile")
@Produces("application/octet-stream")
public Response getFile(@QueryParam("fileId") long fileId) {
FileManager fileManager = new FileManager();
try {
InputStream inputStream = fileManager.getFileFromDB(fileId);
return Response.ok(inputStream, MediaType.APPLICATION_OCTET_STREAM)
.build();
} catch (Exception e) {
e.printStackTrace();
}
return Response.status(Status.NOT_FOUND).build();
}
在客户端,获取。下面是Android的一个小样本,我从我的我的AsyncTask的doInBackground(这需要在后台线程来完成)返回一个位图对象回:
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(new HttpGet(<your_url_base>+"/GetFile?fileId=3"));
content = response.getEntity().getContent();
return BitmapFactory.decodeStream(content);
希望这有助于。