java设置ContentType,设置下载文件名称
根据上传文件名设置ContentType
几种常用上传文件如下:
private String setObjectMetadata(String fileName){
// 指定上传的内容类型。内容类型决定浏览器将以什么形式、什么编码读取文件。如果没有指定则根据文件的扩展名生成,如果没有扩展名则为默认值application/octet-stream。
String type = fileName.substring(fileName.indexOf(".") + 1);
String contentType = null;
if (Objects.equals(type, "jpg") || Objects.equals(type, "JPG")) {
contentType = "image/jpeg";
}else if(Objects.equals(type, "png") || Objects.equals(type, "PNG")) {
contentType = "image/png";
}else if(Objects.equals(type, "xlsx") || Objects.equals(type, "xls")){
contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
}else if(Objects.equals(type, "txt")){
contentType = "text/plain; charset=utf-8";
}else if(Objects.equals(type, "pdf")){
contentType = "application/pdf";
}else if(Objects.equals(type, "doc")){
contentType = "application/msword";
}else if(Objects.equals(type, "docx")){
contentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
}else if(Objects.equals(type, "zip")){
contentType = "application/zip";
}else{
contentType = "application/octet-stream";
}
return contentType ;
}
更多类型参考:https://tool.oschina.net/commons
设置下载文件名称
//下载文件
String contentDisposition = String.format("attachment; filename=%s", UriUtils.encode(fileName, "UTF-8"));
//浏览器内嵌显示
contentDisposition = String.format("inline; filename=%s", UriUtils.encode(fileName, "UTF-8"));
response.setHeader("Content-disposition", contentDisposition);