欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-02 13:49:13
...

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

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

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

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

案例:图片上传设置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,故必须针对可内嵌显示的类型,如上诉代码中列表出的那么多类型。




相关标签: java