解决Java上传文件根据路径在浏览器访问不能在线浏览的问题
创始人
2024-06-02 16:59:27
0

问题描述

今天前端和我说了一个问题,为什么通过接口上传到服务器的文件,有时候可以直接通过url在网上也预览,有的必须要下载到本地才能预览呢。

这真把我问住了,然后我就下去测试了一下,还真是这种情况!

还原场景

先还原下场景。

这是我本来的上传附件的接口:

在这里插入图片描述

我们通过接口测试下,可以看到是上传成功的:

在这里插入图片描述

然后把url直接放到浏览器进行浏览:

在这里插入图片描述

按下回车,走你,确实出现了那个问题!

在这里插入图片描述

思考问题

遇到问题不要慌,我初步猜测是跟http的请求头有关的,但是具体说不出来,然后就带着我的疑问。在网上找到了下面的相关描述:

content-type属性

这个属性大家一般见到的都比较多,用于定义网络文件的类型和网页的编码,一般用于做文件下载的时候我们都会定义它的属性是流或者其他。

在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息。

例如:Content-Type:text/html;charset:utf-8;

关于它的使用和不同格式,网上有很多大佬都写过相关文章,我就不做赘述了。

重点是下面这个属性

content-disposition属性

它指示如何处理响应内容。一般有如下两种方式:

1:inline:直接在页面显示

2:attchment:以附件形式下载

content-disposition 是 MIME 协议的扩展 ,其作用就是用来处理一些文件的显示问题, content-disposition的值为inline时,表示它可以显示在网页内,或作为网页,此时浏览器会自动进行预览, content-disposition的值为attachment时,表示它应该下载,大多数浏览器呈现“另存为”对话框,如果filename存在值,也会预填入文件名。

比如我下载文件的接口,就用带了这两个属性,而content-disposition的值正是attachment

ps:这两个属性都可以通过response去设置,只不过对于content-disposition的修改要放在请求头(header)里面

在这里插入图片描述

解决问题

很明显,我遇到的问题就是没有做content-disposition的处理,把content-disposition的值设置为attachment即可

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...