Send/Receive 图像来自 REST
Send/Receive images via REST
我将 grizzly 用于 java 休息服务,并在 android 应用程序中使用这些网络服务。
就 "text" 数据而言,它工作正常。
现在我想在我的 android 应用程序中加载图像(从服务器),使用此休息服务并允许用户从设备更新图像。
我试过这个代码
@GET
@Path("/img3")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response getFile()
{
File file = new File("img/3.jpg");
return Response.ok(file, MediaType.APPLICATION_OCTET_STREAM).header("Content-Disposition", "attachment; filename=\"" + file.getName() + "\"") // optional
.build();
}
上面的代码允许我下载文件,但是可以在浏览器中显示结果吗?像这样
http://docs.oracle.com/javase/tutorial/images/oracle-java-logo.png
第 1 部分的解决方案:
我已经按照 Shadow
的建议对我的代码进行了更改
@GET
@Path("/img3")
@Produces("image/jpg")
public Response getFile(@PathParam("id") String id) throws SQLException
{
File file = new File("img/3.jpg");
return Response.ok(file, "image/jpg").header("Inline", "filename=\"" + file.getName() + "\"")
.build();
}
请求的图片将显示在浏览器中
第 2 部分:
用于转换回Base64编码图像的代码
@POST
@Path("/upload/{primaryKey}")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces("image/jpg")
public String uploadImage(@FormParam("image") String image, @PathParam("primaryKey") String primaryKey) throws SQLException, FileNotFoundException
{
String result = "false";
FileOutputStream fos;
fos = new FileOutputStream("img/" + primaryKey + ".jpg");
// decode Base64 String to image
try
{
byte byteArray[] = Base64.getMimeDecoder().decode(image);
fos.write(byteArray);
result = "true";
fos.close();
}
catch (Exception e)
{
e.printStackTrace();
}
return result;
}
我将 grizzly 用于 java 休息服务,并在 android 应用程序中使用这些网络服务。
就 "text" 数据而言,它工作正常。
现在我想在我的 android 应用程序中加载图像(从服务器),使用此休息服务并允许用户从设备更新图像。
我试过这个代码
@GET
@Path("/img3")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response getFile()
{
File file = new File("img/3.jpg");
return Response.ok(file, MediaType.APPLICATION_OCTET_STREAM).header("Content-Disposition", "attachment; filename=\"" + file.getName() + "\"") // optional
.build();
}
上面的代码允许我下载文件,但是可以在浏览器中显示结果吗?像这样 http://docs.oracle.com/javase/tutorial/images/oracle-java-logo.png
第 1 部分的解决方案:
我已经按照 Shadow
的建议对我的代码进行了更改@GET
@Path("/img3")
@Produces("image/jpg")
public Response getFile(@PathParam("id") String id) throws SQLException
{
File file = new File("img/3.jpg");
return Response.ok(file, "image/jpg").header("Inline", "filename=\"" + file.getName() + "\"")
.build();
}
请求的图片将显示在浏览器中
第 2 部分: 用于转换回Base64编码图像的代码
@POST
@Path("/upload/{primaryKey}")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces("image/jpg")
public String uploadImage(@FormParam("image") String image, @PathParam("primaryKey") String primaryKey) throws SQLException, FileNotFoundException
{
String result = "false";
FileOutputStream fos;
fos = new FileOutputStream("img/" + primaryKey + ".jpg");
// decode Base64 String to image
try
{
byte byteArray[] = Base64.getMimeDecoder().decode(image);
fos.write(byteArray);
result = "true";
fos.close();
}
catch (Exception e)
{
e.printStackTrace();
}
return result;
}