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类型并将其修改为正确的类型,我们可以轻松地解决这个问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值