文件上传Content-disposition中Attachment和inline的区别

在日常开发中文件上传需要设置content-disposition类型,是下载还是内嵌显示。如我用阿里云或者京东云上传图片,我需要打开连接是直接显示图片,而导出excel文件我希望直接下载文件那么content-disposition设置就不一样。

java web中下载文件时,我们一般设置Content-Disposition告诉浏览器下载文件的名称,是否在浏览器中内嵌显示.
Content-disposition: inline; filename=1502849449726.jpg表示浏览器内嵌显示一个文件

Content-disposition: attachment; filename=1502849449726.xlsx表示会下载文件,如火狐浏览器中


案例:图片上传设置content-dispition

//指定该Object文件类型,默认值application/octet-stream
objectMetadata.setContentType(getContentType(fileName));
/**
 * 通过文件名判断并获取OSS服务文件上传时文件的contentType
 * @param fileName 文件名
 * @return 文件的contentType
 */
public static  String getContentType(String fileName){
	//文件名后缀
	String fileExtension = fileName.substring(fileName.lastIndexOf("."));
	if(".bmp".equalsIgnoreCase(fileExtension)) {
		return "image/bmp";
	}
	if(".gif".equalsIgnoreCase(fileExtension)) {
		return "image/gif";
	}
	if(".jpeg".equalsIgnoreCase(fileExtension) || ".jpg".equalsIgnoreCase(fileExtension)  || ".png".equalsIgnoreCase(fileExtension) ){
		return "image/jpeg";
	}
	if(".html".equalsIgnoreCase(fileExtension)){
		return "text/html";
	}
	if(".txt".equalsIgnoreCase(fileExtension)){
		return "text/plain";
	}
	if(".vsd".equalsIgnoreCase(fileExtension)){
		return "application/vnd.visio";
	}
	if(".ppt".equalsIgnoreCase(fileExtension) || "pptx".equalsIgnoreCase(fileExtension)) {
		return "application/vnd.ms-powerpoint";
	}
	if(".doc".equalsIgnoreCase(fileExtension) || "docx".equalsIgnoreCase(fileExtension)) {
		return "application/msword";
	}
	if(".xml".equalsIgnoreCase(fileExtension)) {
		return "text/xml";
	}
	return "image/jpeg";
}
备注:

这样在浏览器访问上传图片地址就是直接打开图片而不是下载图片。默认头文件类型为application/octet-stream,故必须针对可内嵌显示的类型,如上诉代码中列表出的那么多类型。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值