Java jiraClient上传附件不能在浏览器预览的问题分析

最近测试的同学反馈问题说使用平台的报bug上传视频的附件以后,然后在jira上确没有办法通过点击附件进行预览,而需要下载下来才能够查看。但是如果是直接在jira上进行上传附件就不会有这个问题

如果说不了解具体原因的,其实就会觉得这个问题非常的有意思,因为就是一个文件上传,为啥还能够导致一个能够在浏览器打开预览,而一个不行呢。

带着这个问题,可能我们先了解一个问题就是 **🚢🚢🚢 浏览器打开图片链接为什么有时候是预览有时候是下载 这篇文章其实就很好的解释了为什么会出现这样子的现象,归根到底是因为 Content-Disposition 的原因,

但是以上的内容还是没有解释上传的过程中有什么问题,还是看下 jiraClient的上传文件的实际是什么样的吧。

private JSON request(HttpEntityEnclosingRequestBase req, File file)throws RestException, IOException {if (file != null) {File fileUpload = file;req.setHeader("X-Atlassian-Token", "nocheck");MultipartEntity ent = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE, null,Charset.forName("UTF-8"));ent.addPart("file", new FileBody(fileUpload, "application/octet-stream", "UTF-8"));req.setEntity(ent);}return request(req);
}

这个地方有一个地方比较明显也就是 new FileBody(fileUpload, "application/octet-stream", "UTF-8")); 这个地方是在设置文件的MIME , 那是因为这个的原因吗?
在这里插入图片描述

所以确实是因为这个类型导致的, 所以不应该直接写死这个值,应该要根据具体的文件进行处理即可了。这里就不做详细说明 ,贴具体的代码改动就好了

private JSON request(HttpEntityEnclosingRequestBase req, File file) throws RestException, IOException {if (file != null) {req.setHeader("X-Atlassian-Token", "nocheck");MultipartEntity ent = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE, (String)null, Charset.forName("UTF-8"));Tika tika = new Tika();String mimeType = tika.detect(file);ent.addPart("file", new FileBody(file, mimeType, "UTF-8"));req.setEntity(ent);}return this.request(req);}

结论

Java jiraClient上传附件不能在浏览器预览的问题通常是由于MIME类型不正确造成的。通过找到MIME类型并将其修改为正确的类型,我们可以轻松地解决这个问题。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部