gpt4 book ai didi

java - 服务器生成的图像文件已损坏/不正确

转载 作者:行者123 更新时间:2023-12-02 07:21:51 24 4
gpt4 key购买 nike

我正在使用 Jersey(版本 1.9.1)为 png 图像实现 RESTful Web 服务。我在客户端使用 Apache HttpClient(版本 4x)。客户端代码调用HttpGet来下载图片。成功下载后,它将 InputStream 从 HttpEntity 保存到磁盘。现在的问题是生成的文件和服务器上的文件不同。客户端代码生成的输出图像文件不可渲染。

@GET
@Path("/public/profile/{userId}")
@Produces({ "image/png" })
public Response getImage(@PathParam(value = "userId") String userId) {
Response res = null;
// ImageManagement.gerProfilePicture(userId) returns me profile picture
// of the provided userId in PathParam
File imageFile = ImageManagement.getProfilePicture(userId);
if (imageFile == null) {
res = Response.status(Status.NOT_FOUND).build();
} else {
res = Response
.ok(imageFile, "image/png")
.header("Content-Disposition",
"attachment; filename=Img" + userId + ".png")
.build();
}
return res;
}

下面的客户端代码调用上面的资源方法

private File downloadProfilePicture(String userId) throws IOException{
// URIHelper is a utility class, this give me uri for image resource
URI imageUri = URIHelper.buildURIForProfile(userId);

HttpGet httpGet = new HttpGet(imageUri);
HttpResponse httpResponse = httpClient.execute(httpGet);
int statusCode = httpResponse.getStatusLine().getStatusCode();

File imageFile = null;
if (statusCode == HttpURLConnection.HTTP_OK) {
HttpEntity httpEntity = httpResponse.getEntity();
Header[] headers = httpResponse.getHeaders("Content-Disposition");
imageFile = new File(OUTPUT_DIR, headers[0].getElements()[0]
.getParameterByName("filename").getValue());
FileOutputStream foutStream = new FileOutputStream(imageFile);
httpEntity.writeTo(foutStream);
foutStream.close();
}
return imageFile;
}

现在的问题是服务器上存在文件和下载的文件不同。

下面是服务器上存在的文件的转储。

Dump of the file on server

下面是下载文件的转储。

Dump of the file on client

您可以看到,一些字节正在被更改。 Jersey 服务器 api 是否修改文件中流中的数据?出了什么问题?

更新:

如果我从浏览器点击相同的网址,它会下载文件,但下载的文件不可见。所以这个问题似乎与服务器有关。

最佳答案

我会尝试返回输入流而不是文件对象。我认为媒体类型可能会被弄乱,或者默认的文件处理会弄乱输出。所以使用也许:

Response.ok(new FileInputStream(imageFile), "image/png") .header("内容处置","附件;文件名=Img"+ userId + ".png") .build();

关于java - 服务器生成的图像文件已损坏/不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14104030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com