我正在开发一个REST Web服务,我可以将我的图像作为BLOB datatyepe存储到mysql数据库。
有没有办法为客户提供此图片的网址,以便他们可以访问此图片?
答案 0 :(得分:1)
正如Eric所提到的,您可以像创建一个端点一样创建一个端点,以存储将图像返回给您的图像。重要步骤的摘要可能是:
从数据库中检索blob(对于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返回一个Bitmap对象(这需要在后台线程中完成):
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(new HttpGet(<your_url_base>+"/GetFile?fileId=3"));
content = response.getEntity().getContent();
return BitmapFactory.decodeStream(content);
希望这有帮助。
答案 1 :(得分:-1)
是。编写一个单独的端点,该端点命中数据库并以该图像响应。