如何使用REST Web服务在MySQL数据库中存储图像

时间:2014-06-19 09:25:59

标签: java mysql web-services rest resteasy

我正在开发一个REST Web服务,我可以将我的图像作为BLOB datatyepe存储到mysql数据库。

有没有办法为客户提供此图片的网址,以便他们可以访问此图片?

2 个答案:

答案 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)

是。编写一个单独的端点,该端点命中数据库并以该图像响应。