1首先引入依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.21</version>
</dependency>
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>1.24.1</version>
</dependency>
<dependency>
<groupId>org.tukaani</groupId>
<artifactId>xz</artifactId>
<version>1.9</version>
</dependency>
2直接上工具类,解压缩支持按照文件类型进行解压缩,支持原先未压缩文件。
package com.utils;
import com.alibaba.schedulerx.shade.org.apache.commons.lang.time.DateFormatUtils;
import com.cpit.ycyt.vch.enums.FileTypeEnum;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.archivers.ArchiveEntry;
import org.apache.commons.compress.archivers.sevenz.SevenZArchiveEntry;
import org.apache.commons.compress.archivers.sevenz.SevenZFile;
import org.apache.commons.compress.archivers.sevenz.SevenZOutputFile;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.tika.Tika;
import org.springframework.stereotype.Component;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.*;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Random;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
/**
* 解压缩工具(暂时支持zip,7z。后续待扩充)
*
* @author
* @email
* @date 2024/1/26 9:05
*/
@Component
@Slf4j
public class CompressUtil {
// 临时文件存放地址(可以替换成服务器上一个固定存在的地址)
private String tmpfilepath="/home/admin/";
/**
* zip压缩
*
* @param inputStream 要压缩的文件流
* @param objectName 压缩后的文件存放目录
*/
public Map compressZip(InputStream inputStream, String objectName) throws IOException {
InputStream in = null;
String lastPart = getLastPart(objectName);
File file = new File(tmpfilepath +lastPart);
String fileName = file.getName();
FileUtils.copyInputStreamToFile(inputStream, file);
File tempZipFile = null;
Map map = new HashMap();
try {
// 创建临时ZIP文件
tempZipFile = createTempZipFile(fileName + "T.zip", file);
in = new FileInputStream(tempZipFile);
map.put("objectName", objectName + ".zip");
map.put("in", in);
map.put("output", tempZipFile);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 后定义先释放
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
file.delete();
} catch (Exception e) {
e.printStackTrace();
}
}
return map;
}
/**
* 7z文件压缩
*
* @param inputStream 要压缩的文件流
* @param objectName 压缩后的文件存放目录
*/
public Map compress7z(InputStream inputStream, String objectName) throws Exception {
// 设置本地源文件路径、目标文件名
String lastPart = getLastPart(objectName);
String substring = StringUtils.substring(lastPart, 0, lastPart.lastIndexOf('.'));
String fileType = StringUtils.substring(lastPart, lastPart.lastIndexOf('.'));
String outputFile = substring;
String inFile = substring + "IN" + fileType;
File input = new File(tmpfilepath + inFile);
Map map = new HashMap();
if (!input.exists()) {
try {
//创建文件
input.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
FileUtils.copyInputStreamToFile(inputStream, input);
SevenZOutputFile out = null;
InputStream in = null;
File output = null;
try {
output = new File(tmpfilepath+outputFile);
if (!output.exists()) {
try {
//创建文件
output.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
out = new SevenZOutputFile(output);
compress(out, input, objectName);
in = new FileInputStream(output);
map.put("objectName", objectName + ".7z");
map.put("in", in);
map.put("output", output);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
input.delete();
} catch (Exception e) {
e.printStackTrace();
}
}
return map;
}
/**
* @param name 压缩文件名,可以写为null保持默认
*/
//递归压缩
public static void compress(SevenZOutputFile out, File input, String name) throws IOException {
if (name == null) {
name = input.getName();
}
SevenZArchiveEntry entry = null;
//如果路径为目录(文件夹)
if (input.isDirectory()) {
//取出文件夹中的文件(或子文件夹)
File[] flist = input.listFiles();
if (flist.length == 0)//如果文件夹为空,则只需在目的地.7z文件中写入一个目录进入
{
entry = out.createArchiveEntry(input, name + "/");
out.putArchiveEntry(entry);
} else//如果文件夹不为空,则递归调用compress,文件夹中的每一个文件(或文件夹)进行压缩
{
for (int i = 0; i < flist.length; i++) {
compress(out, flist[i], name + "/" + flist[i].getName());
}
}
} else//如果不是目录(文件夹),即为文件,则先写入目录进入点,之后将文件写入7z文件中
{
FileInputStream fos = new FileInputStream(input);
BufferedInputStream bis = new BufferedInputStream(fos);
entry = out.createArchiveEntry(input, name);
out.putArchiveEntry(entry);
int len = -1;
//将源文件写入到7z文件中
byte[] buf = new byte[1024];
while ((len = bis.read(buf)) != -1) {
out.write(buf, 0, len);
}
bis.close();
fos.close();
out.closeArchiveEntry();
}
}
private static File createTempZipFile(String zipFileName, File inputFile) throws IOException {
File outputDir = new File("/tmp");
if (!outputDir.exists()) {
outputDir.mkdirs();
}
File tempZipFile = new File(outputDir, zipFileName);
try (FileOutputStream fos = new FileOutputStream(tempZipFile);
BufferedOutputStream bos = new BufferedOutputStream(fos);
ZipOutputStream zos = new ZipOutputStream(bos)) {
addFilesToZip(inputFile, "", zos);
} catch (IOException e) {
throw new RuntimeException("Failed to create temporary ZIP file.", e);
}
return tempZipFile;
}
private static void addFilesToZip(File file, String parentPath, ZipOutputStream zos) throws IOException {
byte[] buffer = new byte[1024];
int bytesRead;
if (file.isDirectory()) {
for (File child : file.listFiles()) {
addFilesToZip(child, parentPath + "/" + file.getName(), zos);
}
} else {
InputStream is = new FileInputStream(file);
zos.putNextEntry(new ZipEntry(parentPath));
while ((bytesRead = is.read(buffer)) > -1) {
zos.write(buffer, 0, bytesRead);
}
IOUtils.closeQuietly(is);
zos.closeEntry();
}
}
/**
* 暂时解压缩只支持zip,7z其他格式后续扩充
*
* @param inputStream 待解压缩的输入流
*/
public Map deCompress(InputStream inputStream) throws IOException {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = inputStream.read(buffer)) > -1) {
outputStream.write(buffer, 0, len);
}
outputStream.flush();
InputStream in1 = new ByteArrayInputStream(outputStream.toByteArray());
InputStream in2 = new ByteArrayInputStream(outputStream.toByteArray());
String fileTypeByFileName = getFileTypeByFileName(in1);
Map map = new HashMap();
try {
if (Objects.equals(fileTypeByFileName, "7z")) {
//7z解压缩
map = un7z(in2);
} else if (Objects.equals(fileTypeByFileName, "zip")) {
// zip解压缩
map = unzip(in2);
} else {
//不处理文件字节流为未压缩流
map.put("inputstream", in2);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
in1.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return map;
}
/**
* 解压zip文件
*
* @param inputStream
*/
public Map unzip(InputStream inputStream) throws IOException {
Map map = new HashMap();
ZipInputStream zipIn = null;
File destDir = null;
try {
String code = DateFormatUtils.format(new Date(), "yyyyMMddHHmmss");
Random re = new Random();
//生成一个随机四位数
String random = String.valueOf(re.nextInt(9999 - 1000 + 1) + 1000);
String targeFile = code + random;
String destFolder = "path/" + targeFile + "." + "zip";
destDir = new File(destFolder);
if (!destDir.exists()) {
//先得到文件的上级目录,并创建上级目录,在创建文件
destDir.getParentFile().mkdir();
try {
//创建文件
destDir.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
zipIn = new ZipInputStream(inputStream);
ZipEntry entry = zipIn.getNextEntry();
while (entry != null) {
String filePath = destFolder + File.separator + entry.getName();
if (!entry.isDirectory()) {
extractFile(zipIn, filePath);
} else {
File dir = new File(filePath);
dir.mkdirs();
}
zipIn.closeEntry();
entry = zipIn.getNextEntry();
}
inputStream = new FileInputStream(destDir);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 后定义先释放
try {
zipIn.close();
} catch (IOException e) {
e.printStackTrace();
}
}
map.put("inputstream", inputStream);
map.put("targetFile", destDir);
return map;
}
private static void extractFile(ZipInputStream zipIn, String filePath) throws IOException {
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));
byte[] bytesIn = new byte[4096];
int read;
while ((read = zipIn.read(bytesIn)) != -1) {
bos.write(bytesIn, 0, read);
}
bos.close();
}
/**
* 解压7z文件
*
* @param inputStream
*/
public Map un7z(InputStream inputStream) throws IOException {
SevenZFile sevenZFile = null;
File newFile = null;
OutputStream out = null;
BufferedOutputStream bos = null;
InputStream inpust = null;
// 设置临时源文件,目标文件
String code = DateFormatUtils.format(new Date(), "yyyyMMddHHmmss");
Random re = new Random();
//生成一个随机四位数
String random = String.valueOf(re.nextInt(9999 - 1000 + 1) + 1000);
final String fileName = code + random;
String destFolder = fileName;
File input = new File(fileName + "T");
if (!input.exists()) {
try {
//创建文件
input.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
newFile = new File(destFolder);
if (!newFile.exists()) {
try {
//创建文件
newFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
FileUtils.copyInputStreamToFile(inputStream, input);
sevenZFile = new SevenZFile(input);
try {
ArchiveEntry entry;
while ((entry = sevenZFile.getNextEntry()) != null) {
if (!entry.isDirectory()) {
out = new FileOutputStream(newFile);
bos = new BufferedOutputStream(out);
int len = -1;
byte[] buf = new byte[(int) entry.getSize()];
while ((len = sevenZFile.read(buf)) != -1) {
bos.write(buf, 0, len);
}
bos.flush();
inpust = new FileInputStream(newFile);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
sevenZFile.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
input.delete();
} catch (Exception e) {
e.printStackTrace();
}
}
Map map = new HashMap();
map.put("inputstream", inpust);
map.put("targetFile", newFile);
return map;
}
public String getLastPart(String path) {
int lastIndex = path.lastIndexOf("/");
if (lastIndex == -1) {
lastIndex = path.lastIndexOf("\\");
}
return path.substring(lastIndex + 1);
}
/**
* 获取文件类型
*
* @param inputStream
*/
public String getFileTypeByFileName(InputStream inputStream) {
String code = DateFormatUtils.format(new Date(), "yyyyMMddHHmmss");
Random re = new Random();
//生成一个随机四位数
String random = String.valueOf(re.nextInt(9999 - 1000 + 1) + 1000);
final String fileName = code + random;
Tika defaultTika = new Tika();
String fileType = null;
final File file = new File(fileName);
try {
FileUtils.copyInputStreamToFile(inputStream, file);
String contentType = defaultTika.detect(file);
fileType = FileTypeEnum.getFileType(contentType);
return fileType;
} catch (Exception e) {
log.error("getFileTypeByFileName exception:", e);
} finally {
try {
file.delete();
} catch (Exception e) {
e.printStackTrace();
}
return fileType;
}
}
}
文件枚举类
package com.enums;
/**
* 文件类型
*
* @author
* @email
* @date 2024/1/22 15:27
*/
public enum FileTypeEnum {
FILE_TYPE_JSON("json", "application/json"),
FILE_TYPE_ZIP("zip", "application/zip"),
FILE_TYPE_TEXT("text", "text/plain"),
FILE_TYPE_7Z("7z", "application/x-7z-compressed"),
FILE_TYPE_XLS("xls", "application/vnd.ms-excel"),
FILE_TYPE_XLSX("xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"),
FILE_TYPE_JPG("jpg", "image/jpeg"),
FILE_TYPE_123("123", "pplication/vnd.lotus-1-2-3"),
FILE_TYPE_3ds("3ds", "mage/x-3ds"),
FILE_TYPE_3g2("3g2", "ideo/3gpp"),
FILE_TYPE_3ga("3ga", "ideo/3gpp"),
FILE_TYPE_3gp("3gp", "ideo/3gpp"),
FILE_TYPE_3gpp("3gpp", "ideo/3gpp"),
FILE_TYPE_602("602", "pplication/x-t602"),
FILE_TYPE_669("669", "udio/x-mod"),
FILE_TYPE_7z("7z", "pplication/x-7z-compressed"),
FILE_TYPE_a("a", "pplication/x-archive"),
FILE_TYPE_aac("aac", "udio/mp4"),
FILE_TYPE_abw("abw", "pplication/x-abiword"),
FILE_TYPE_abwcras("abw.crashed", "pplication/x-abiword"),
FILE_TYPE_abwgz("abw.gz", "pplication/x-abiword"),
FILE_TYPE_ac3("ac3", "udio/ac3"),
FILE_TYPE_ace("ace", "pplication/x-ace"),
FILE_TYPE_adb("adb", "ext/x-adasrc"),
FILE_TYPE_ads("ads", "ext/x-adasrc"),
FILE_TYPE_afm("afm", "pplication/x-font-afm"),
FILE_TYPE_ag("ag", "mage/x-applix-graphics"),
FILE_TYPE_ai("ai", "pplication/illustrator"),
FILE_TYPE_aif("aif", "udio/x-aiff"),
FILE_TYPE_aifc("aifc", "udio/x-aiff"),
FILE_TYPE_aiff("aiff", "udio/x-aiff"),
FILE_TYPE_al("al", "pplication/x-perl"),
FILE_TYPE_alz("alz", "pplication/x-alz"),
FILE_TYPE_amr("amr", "udio/amr"),
FILE_TYPE_ani("ani", "pplication/x-navi-animation"),
FILE_TYPE_anim19("anim[1-9j]", "ideo/x-anim"),
FILE_TYPE_anx("anx", "pplication/annodex"),
FILE_TYPE_ape("ape", "udio/x-ape"),
FILE_TYPE_arj("arj", "pplication/x-arj"),
FILE_TYPE_arw("arw", "mage/x-sony-arw"),
FILE_TYPE_as("as", "pplication/x-applix-spreadsheet"),
FILE_TYPE_asc("asc", "ext/plain"),
FILE_TYPE_asf("asf", "ideo/x-ms-asf"),
FILE_TYPE_asp("asp", "pplication/x-asp"),
FILE_TYPE_ass("ass", "ext/x-ssa"),
FILE_TYPE_asx("asx", "udio/x-ms-asx"),
FILE_TYPE_atom("atom", "pplication/atom+xml"),
FILE_TYPE_au("au", "udio/basic"),
FILE_TYPE_avi("avi", "ideo/x-msvideo"),
FILE_TYPE_aw("aw", "pplication/x-applix-word"),
FILE_TYPE_awb("awb", "udio/amr-wb"),
FILE_TYPE_awk("awk", "pplication/x-awk"),
FILE_TYPE_axa("axa", "udio/annodex"),
FILE_TYPE_axv("axv", "ideo/annodex"),
FILE_TYPE_bak("bak", "pplication/x-trash"),
FILE_TYPE_bcpio("bcpio", "pplication/x-bcpio"),
FILE_TYPE_bdf("bdf", "pplication/x-font-bdf"),
FILE_TYPE_bib("bib", "ext/x-bibtex"),
FILE_TYPE_bin("bin", "pplication/octet-stream"),
FILE_TYPE_blend("blend", "pplication/x-blender"),
FILE_TYPE_blender("blender", "pplication/x-blender"),
FILE_TYPE_bmp("bmp", "mage/bmp"),
FILE_TYPE_bz("bz", "pplication/x-bzip"),
FILE_TYPE_bz2("bz2", "pplication/x-bzip"),
FILE_TYPE_c("c", "ext/x-csrc"),
FILE_TYPE_c2("c++", "ext/x-c++src"),
FILE_TYPE_cab("cab", "pplication/vnd.ms-cab-compressed"),
FILE_TYPE_cb7("cb7", "pplication/x-cb7"),
FILE_TYPE_cbr("cbr", "pplication/x-cbr"),
FILE_TYPE_cbt("cbt", "pplication/x-cbt"),
FILE_TYPE_cbz("cbz", "pplication/x-cbz"),
FILE_TYPE_cc("cc", "ext/x-c++src"),
FILE_TYPE_cdf("cdf", "pplication/x-netcdf"),
FILE_TYPE_cdr("cdr", "pplication/vnd.corel-draw"),
FILE_TYPE_cer("cer", "pplication/x-x509-ca-cert"),
FILE_TYPE_cert("cert", "pplication/x-x509-ca-cert"),
FILE_TYPE_cgm("cgm", "mage/cgm"),
FILE_TYPE_chm("chm", "pplication/x-chm"),
FILE_TYPE_chrt("chrt", "pplication/x-kchart"),
FILE_TYPE_class("class", "pplication/x-java"),
FILE_TYPE_cls("cls", "ext/x-tex"),
FILE_TYPE_cmake("cmake", "ext/x-cmake"),
FILE_TYPE_cpio("cpio", "pplication/x-cpio"),
FILE_TYPE_cpiogz("cpio.gz", "pplication/x-cpio-compressed"),
FILE_TYPE_cpp("cpp", "ext/x-c++src"),
FILE_TYPE_cr2("cr2", "mage/x-canon-cr2"),
FILE_TYPE_crt("crt", "pplication/x-x509-ca-cert"),
FILE_TYPE_crw("crw", "mage/x-canon-crw"),
FILE_TYPE_cs("cs", "ext/x-csharp"),
FILE_TYPE_csh("csh", "pplication/x-csh"),
FILE_TYPE_css("css", "ext/css"),
FILE_TYPE_cssl("cssl", "ext/css"),
FILE_TYPE_csv("csv", "ext/csv"),
FILE_TYPE_cue("cue", "pplication/x-cue"),
FILE_TYPE_cur("cur", "mage/x-win-bitmap"),
FILE_TYPE_cxx("cxx", "ext/x-c++src"),
FILE_TYPE_d("d", "ext/x-dsrc"),
FILE_TYPE_dar("dar", "pplication/x-dar"),
FILE_TYPE_dbf("dbf", "pplication/x-dbf"),
FILE_TYPE_dc("dc", "pplication/x-dc-rom"),
FILE_TYPE_dcl("dcl", "ext/x-dcl"),
FILE_TYPE_dcm("dcm", "pplication/dicom"),
FILE_TYPE_dcr("dcr", "mage/x-kodak-dcr"),
FILE_TYPE_dds("dds", "mage/x-dds"),
FILE_TYPE_deb("deb", "pplication/x-deb"),
FILE_TYPE_der("der", "pplication/x-x509-ca-cert"),
FILE_TYPE_desktop("desktop", "pplication/x-desktop"),
FILE_TYPE_dia("dia", "pplication/x-dia-diagram"),
FILE_TYPE_diff("diff", "ext/x-patch"),
FILE_TYPE_divx("divx", "ideo/x-msvideo"),
FILE_TYPE_djv("djv", "mage/vnd.djvu"),
FILE_TYPE_djvu("djvu", "mage/vnd.djvu"),
FILE_TYPE_dng("dng", "mage/x-adobe-dng"),
FILE_TYPE_doc("doc", "pplication/msword"),
FILE_TYPE_docbook("docbook", "pplication/docbook+xml"),
FILE_TYPE_docm("docm", "pplication/vnd.openxmlformats-officedocument.wordprocessingml.document"),
FILE_TYPE_docx("docx", "pplication/vnd.openxmlformats-officedocument.wordprocessingml.document"),
FILE_TYPE_dot("dot", "ext/vnd.graphviz"),
FILE_TYPE_dsl("dsl", "ext/x-dsl"),
FILE_TYPE_dtd("dtd", "pplication/xml-dtd"),
FILE_TYPE_dtx("dtx", "ext/x-tex"),
FILE_TYPE_dv("dv", "ideo/dv"),
FILE_TYPE_dvi("dvi", "pplication/x-dvi"),
FILE_TYPE_dvibz2("dvi.bz2", "pplication/x-bzdvi"),
FILE_TYPE_dvigz("dvi.gz", "pplication/x-gzdvi"),
FILE_TYPE_dwg("dwg", "mage/vnd.dwg"),
FILE_TYPE_dxf("dxf", "mage/vnd.dxf"),
FILE_TYPE_e("e", "ext/x-eiffel"),
FILE_TYPE_egon("egon", "pplication/x-egon"),
FILE_TYPE_eif("eif", "ext/x-eiffel"),
FILE_TYPE_el("el", "ext/x-emacs-lisp"),
FILE_TYPE_emf("emf", "mage/x-emf"),
FILE_TYPE_emp("emp", "pplication/vnd.emusic-emusic_package"),
FILE_TYPE_ent("ent", "pplication/xml-external-parsed-entity"),
FILE_TYPE_eps("eps", "mage/x-eps"),
FILE_TYPE_epsbz2("eps.bz2", "mage/x-bzeps"),
FILE_TYPE_epsgz("eps.gz", "mage/x-gzeps"),
FILE_TYPE_epsf("epsf", "mage/x-eps"),
FILE_TYPE_epsfbz2("epsf.bz2", "mage/x-bzeps"),
FILE_TYPE_epsfgz("epsf.gz", "mage/x-gzeps"),
FILE_TYPE_epsi("epsi", "mage/x-eps"),
FILE_TYPE_epsibz2("epsi.bz2", "mage/x-bzeps"),
FILE_TYPE_epsigz("epsi.gz", "mage/x-gzeps"),
FILE_TYPE_epub("epub", "pplication/epub+zip"),
FILE_TYPE_erl("erl", "ext/x-erlang"),
FILE_TYPE_es("es", "pplication/ecmascript"),
FILE_TYPE_etheme("etheme", "pplication/x-e-them"),
FILE_TYPE_etx("etx", "ext/x-setext"),
FILE_TYPE_exe("exe", "pplication/x-ms-dos-ex"),
FILE_TYPE_exr("exr", "mage/x-exr"),
FILE_TYPE_ez("ez", "pplication/andrew-inset"),
FILE_TYPE_f("f", "ext/x-fortran"),
FILE_TYPE_f90("f90", "ext/x-fortran"),
FILE_TYPE_f95("f95", "ext/x-fortran"),
FILE_TYPE_fb2("fb2", "pplication/x-fictionbo"),
FILE_TYPE_fig("fig", "mage/x-xfig"),
FILE_TYPE_fits("fits", "mage/fits"),
FILE_TYPE_fl("fl", "pplication/x-fluid"),
FILE_TYPE_flac("flac", "udio/x-flac"),
FILE_TYPE_flc("flc", "ideo/x-flic"),
FILE_TYPE_fli("fli", "ideo/x-flic"),
FILE_TYPE_flv("flv", "ideo/x-flv"),
FILE_TYPE_flw("flw", "pplication/x-kivio"),
FILE_TYPE_fo("fo", "ext/x-xslfo"),
FILE_TYPE_for("for", "ext/x-fortran"),
FILE_TYPE_g3("g3", "mage/fax-g3"),
FILE_TYPE_gb("gb", "pplication/x-gameboy-rom"),
FILE_TYPE_gba("gba", "pplication/x-gba-rom"),
FILE_TYPE_gcrd("gcrd", "ext/directory"),
FILE_TYPE_ged("ged", "pplication/x-gedcom"),
FILE_TYPE_gedcom("gedcom", "pplication/x-gedcom"),
FILE_TYPE_gen("gen", "pplication/x-genesis-rom"),
FILE_TYPE_gf("gf", "pplication/x-tex-gf"),
FILE_TYPE_gg("gg", "pplication/x-sms-rom"),
FILE_TYPE_gif("gif", "mage/gif"),
FILE_TYPE_glade("glade", "pplication/x-glade"),
FILE_TYPE_gmo("gmo", "pplication/x-gettext-translation"),
FILE_TYPE_gnc("gnc", "pplication/x-gnucash"),
FILE_TYPE_gnd("gnd", "pplication/gnunet-directory"),
FILE_TYPE_gnucash("gnucash", "pplication/x-gnucash"),
FILE_TYPE_gnumeric("gnumeric", "pplication/x-gnumeric"),
FILE_TYPE_gnuplot("gnuplot", "pplication/x-gnuplot"),
FILE_TYPE_gp("gp", "pplication/x-gnuplot"),
FILE_TYPE_gpg("gpg", "pplication/pgp-encrypted"),
FILE_TYPE_gplt("gplt", "pplication/x-gnuplot"),
FILE_TYPE_gra("gra", "pplication/x-graphite"),
FILE_TYPE_gsf("gsf", "pplication/x-font-type1"),
FILE_TYPE_gsm("gsm", "udio/x-gsm"),
FILE_TYPE_gtar("gtar", "pplication/x-tar"),
FILE_TYPE_gv("gv", "ext/vnd.graphviz"),
FILE_TYPE_gvp("gvp", "ext/x-google-video-pointer"),
FILE_TYPE_gz("gz", "pplication/x-gzip"),
FILE_TYPE_h("h", "ext/x-chdr"),
FILE_TYPE_h2("h++", "ext/x-c++hdr"),
FILE_TYPE_hdf("hdf", "pplication/x-hdf"),
FILE_TYPE_hh("hh", "ext/x-c++hdr"),
FILE_TYPE_hp("hp", "ext/x-c++hdr"),
FILE_TYPE_hpgl("hpgl", "pplication/vnd.hp-hpgl"),
FILE_TYPE_hpp("hpp", "ext/x-c++hdr"),
FILE_TYPE_hs("hs", "ext/x-haskell"),
FILE_TYPE_htm("htm", "ext/html"),
FILE_TYPE_html("html", "ext/html"),
FILE_TYPE_hwp("hwp", "pplication/x-hwp"),
FILE_TYPE_hwt("hwt", "pplication/x-hwt"),
FILE_TYPE_hxx("hxx", "ext/x-c++hdr"),
FILE_TYPE_ica("ica", "pplication/x-ica"),
FILE_TYPE_icb("icb", "mage/x-tga"),
FILE_TYPE_icns("icns", "mage/x-icns"),
FILE_TYPE_ico("ico", "mage/vnd.microsoft.icon"),
FILE_TYPE_ics("ics", "ext/calendar"),
FILE_TYPE_idl("idl", "ext/x-idl"),
FILE_TYPE_ief("ief", "mage/ief"),
FILE_TYPE_iff("iff", "mage/x-iff"),
FILE_TYPE_ilbm("ilbm", "mage/x-ilbm"),
FILE_TYPE_ime("ime", "ext/x-imelody"),
FILE_TYPE_imy("imy", "ext/x-imelody"),
FILE_TYPE_ins("ins", "ext/x-tex"),
FILE_TYPE_iptables("iptables", "ext/x-iptables"),
FILE_TYPE_iso("iso", "pplication/x-cd-image"),
FILE_TYPE_iso9660("iso9660", "pplication/x-cd-image"),
FILE_TYPE_it("it", "udio/x-it"),
FILE_TYPE_j2k("j2k", "mage/jp2"),
FILE_TYPE_jad("jad", "ext/vnd.sun.j2me.app-descriptor"),
FILE_TYPE_jar("jar", "pplication/x-java-archive"),
FILE_TYPE_java("java", "ext/x-java"),
FILE_TYPE_jng("jng", "mage/x-jng"),
FILE_TYPE_jnlp("jnlp", "pplication/x-java-jnlp-file"),
FILE_TYPE_jp2("jp2", "mage/jp2"),
FILE_TYPE_jpc("jpc", "mage/jp2"),
FILE_TYPE_jpe("jpe", "mage/jpeg"),
FILE_TYPE_jpeg("jpeg", "mage/jpeg"),
FILE_TYPE_jpf("jpf", "mage/jp2"),
FILE_TYPE_jpr("jpr", "pplication/x-jbuilder-project"),
FILE_TYPE_jpx("jpx", "mage/jp2"),
FILE_TYPE_js("js", "pplication/javascript"),
FILE_TYPE_json("json", "pplication/json"),
FILE_TYPE_jsonp("jsonp", "pplication/jsonp"),
FILE_TYPE_k25("k25", "mage/x-kodak-k25"),
FILE_TYPE_kar("kar", "udio/midi"),
FILE_TYPE_karbon("karbon", "pplication/x-karbon"),
FILE_TYPE_kdc("kdc", "mage/x-kodak-kdc"),
FILE_TYPE_kdelnk("kdelnk", "pplication/x-desktop"),
FILE_TYPE_kexi("kexi", "pplication/x-kexiproject-sqlite3"),
FILE_TYPE_kexic("kexic", "pplication/x-kexi-connectiondata"),
FILE_TYPE_kexis("kexis", "pplication/x-kexiproject-shortcut"),
FILE_TYPE_kfo("kfo", "pplication/x-kformula"),
FILE_TYPE_kil("kil", "pplication/x-killustrator"),
FILE_TYPE_kino("kino", "pplication/smil"),
FILE_TYPE_kml("kml", "pplication/vnd.google-earth.kml+xml"),
FILE_TYPE_kmz("kmz", "pplication/vnd.google-earth.kmz"),
FILE_TYPE_kon("kon", "pplication/x-kontour"),
FILE_TYPE_kpm("kpm", "pplication/x-kpovmodeler"),
FILE_TYPE_kpr("kpr", "pplication/x-kpresenter"),
FILE_TYPE_kpt("kpt", "pplication/x-kpresenter"),
FILE_TYPE_kra("kra", "pplication/x-krita"),
FILE_TYPE_ksp("ksp", "pplication/x-kspread"),
FILE_TYPE_kud("kud", "pplication/x-kugar"),
FILE_TYPE_kwd("kwd", "pplication/x-kword"),
FILE_TYPE_kwt("kwt", "pplication/x-kword"),
FILE_TYPE_la("la", "pplication/x-shared-library-la"),
FILE_TYPE_latex("latex", "ext/x-tex"),
FILE_TYPE_ldif("ldif", "ext/x-ldif"),
FILE_TYPE_lha("lha", "pplication/x-lha"),
FILE_TYPE_lhs("lhs", "ext/x-literate-haskell"),
FILE_TYPE_lhz("lhz", "pplication/x-lhz"),
FILE_TYPE_log("log", "ext/x-log"),
FILE_TYPE_ltx("ltx", "ext/x-tex"),
FILE_TYPE_lua("lua", "ext/x-lua"),
FILE_TYPE_lwo("lwo", "mage/x-lwo"),
FILE_TYPE_lwob("lwob", "mage/x-lwo"),
FILE_TYPE_lws("lws", "mage/x-lws"),
FILE_TYPE_ly("ly", "ext/x-lilypond"),
FILE_TYPE_lyx("lyx", "pplication/x-lyx"),
FILE_TYPE_lz("lz", "pplication/x-lzip"),
FILE_TYPE_lzh("lzh", "pplication/x-lha"),
FILE_TYPE_lzma("lzma", "pplication/x-lzma"),
FILE_TYPE_lzo("lzo", "pplication/x-lzop"),
FILE_TYPE_m("m", "ext/x-matlab"),
FILE_TYPE_m15("m15", "udio/x-mod"),
FILE_TYPE_m2t("m2t", "ideo/mpeg"),
FILE_TYPE_m3u("m3u", "udio/x-mpegurl"),
FILE_TYPE_m3u8("m3u8", "udio/x-mpegurl"),
FILE_TYPE_m4("m4", "pplication/x-m4"),
FILE_TYPE_m4a("m4a", "udio/mp4"),
FILE_TYPE_m4b("m4b", "udio/x-m4b"),
FILE_TYPE_m4v("m4v", "ideo/mp4"),
FILE_TYPE_mab("mab", "pplication/x-markaby"),
FILE_TYPE_man("man", "pplication/x-troff-man"),
FILE_TYPE_mbox("mbox", "pplication/mbox"),
FILE_TYPE_md("md", "pplication/x-genesis-rom"),
FILE_TYPE_mdb("mdb", "pplication/vnd.ms-access"),
FILE_TYPE_mdi("mdi", "mage/vnd.ms-modi"),
FILE_TYPE_me("me", "ext/x-troff-me"),
FILE_TYPE_med("med", "udio/x-mod"),
FILE_TYPE_metalink("metalink", "pplication/metalink+xml"),
FILE_TYPE_mgp("mgp", "pplication/x-magicpoint"),
FILE_TYPE_mid("mid", "udio/midi"),
FILE_TYPE_midi("midi", "udio/midi"),
FILE_TYPE_mif("mif", "pplication/x-mif"),
FILE_TYPE_minipsf("minipsf", "udio/x-minipsf"),
FILE_TYPE_mka("mka", "udio/x-matroska"),
FILE_TYPE_mkv("mkv", "ideo/x-matroska"),
FILE_TYPE_ml("ml", "ext/x-ocaml"),
FILE_TYPE_mli("mli", "ext/x-ocaml"),
FILE_TYPE_mm("mm", "ext/x-troff-mm"),
FILE_TYPE_mmf("mmf", "pplication/x-smaf"),
FILE_TYPE_mml("mml", "ext/mathml"),
FILE_TYPE_mng("mng", "ideo/x-mng"),
FILE_TYPE_mo("mo", "pplication/x-gettext-translation"),
FILE_TYPE_mo3("mo3", "udio/x-mo3"),
FILE_TYPE_moc("moc", "ext/x-moc"),
FILE_TYPE_mod("mod", "udio/x-mod"),
FILE_TYPE_mof("mof", "ext/x-mof"),
FILE_TYPE_moov("moov", "ideo/quicktime"),
FILE_TYPE_mov("mov", "ideo/quicktime"),
FILE_TYPE_movie("movie", "ideo/x-sgi-movie"),
FILE_TYPE_mp11("mp+", "udio/x-musepack"),
FILE_TYPE_mp2("mp2", "ideo/mpeg"),
FILE_TYPE_mp3("mp3", "udio/mpeg"),
FILE_TYPE_mp4("mp4", "ideo/mp4"),
FILE_TYPE_mpc("mpc", "udio/x-musepack"),
FILE_TYPE_mpe("mpe", "ideo/mpeg"),
FILE_TYPE_mpeg("mpeg", "ideo/mpeg"),
FILE_TYPE_mpg("mpg", "ideo/mpeg"),
FILE_TYPE_mpga("mpga", "udio/mpeg"),
FILE_TYPE_mpp("mpp", "udio/x-musepack"),
FILE_TYPE_mrl("mrl", "ext/x-mrml"),
FILE_TYPE_mrml("mrml", "ext/x-mrml"),
FILE_TYPE_mrw("mrw", "mage/x-minolta-mrw"),
FILE_TYPE_ms("ms", "ext/x-troff-ms"),
FILE_TYPE_msi("msi", "pplication/x-msi"),
FILE_TYPE_msod("msod", "mage/x-msod"),
FILE_TYPE_msx("msx", "pplication/x-msx-rom"),
FILE_TYPE_mtm("mtm", "udio/x-mod"),
FILE_TYPE_mup("mup", "ext/x-mup"),
FILE_TYPE_mxf("mxf", "pplication/mxf"),
FILE_TYPE_n64("n64", "pplication/x-n64-rom"),
FILE_TYPE_nb("nb", "pplication/mathematica"),
FILE_TYPE_nc("nc", "pplication/x-netcdf"),
FILE_TYPE_nds("nds", "pplication/x-nintendo-ds-rom"),
FILE_TYPE_nef("nef", "mage/x-nikon-nef"),
FILE_TYPE_nes("nes", "pplication/x-nes-rom"),
FILE_TYPE_nfo("nfo", "ext/x-nfo"),
FILE_TYPE_not("not", "ext/x-mup"),
FILE_TYPE_nsc("nsc", "pplication/x-netshow-channel"),
FILE_TYPE_nsv("nsv", "ideo/x-nsv"),
FILE_TYPE_o("o", "pplication/x-object"),
FILE_TYPE_obj("obj", "pplication/x-tgif"),
FILE_TYPE_ocl("ocl", "ext/x-ocl"),
FILE_TYPE_oda("oda", "pplication/oda"),
FILE_TYPE_odb("odb", "pplication/vnd.oasis.opendocument.database"),
FILE_TYPE_odc("odc", "pplication/vnd.oasis.opendocument.chart"),
FILE_TYPE_odf("odf", "pplication/vnd.oasis.opendocument.formula"),
FILE_TYPE_odg("odg", "pplication/vnd.oasis.opendocument.graphics"),
FILE_TYPE_odi("odi", "pplication/vnd.oasis.opendocument.image"),
FILE_TYPE_odm("odm", "pplication/vnd.oasis.opendocument.text-master"),
FILE_TYPE_odp("odp", "pplication/vnd.oasis.opendocument.presentation"),
FILE_TYPE_ods("ods", "pplication/vnd.oasis.opendocument.spreadsheet"),
FILE_TYPE_odt("odt", "pplication/vnd.oasis.opendocument.text"),
FILE_TYPE_oga("oga", "udio/ogg"),
FILE_TYPE_ogg("ogg", "ideo/x-theora+ogg"),
FILE_TYPE_ogm("ogm", "ideo/x-ogm+ogg"),
FILE_TYPE_ogv("ogv", "ideo/ogg"),
FILE_TYPE_ogx("ogx", "pplication/ogg"),
FILE_TYPE_old("old", "pplication/x-trash"),
FILE_TYPE_oleo("oleo", "pplication/x-oleo"),
FILE_TYPE_opml("opml", "ext/x-opml+xml"),
FILE_TYPE_ora("ora", "mage/openraster"),
FILE_TYPE_orf("orf", "mage/x-olympus-orf"),
FILE_TYPE_otc("otc", "pplication/vnd.oasis.opendocument.chart-template"),
FILE_TYPE_otf("otf", "pplication/x-font-otf"),
FILE_TYPE_otg("otg", "pplication/vnd.oasis.opendocument.graphics-template"),
FILE_TYPE_oth("oth", "pplication/vnd.oasis.opendocument.text-web"),
FILE_TYPE_otp("otp", "pplication/vnd.oasis.opendocument.presentation-template"),
FILE_TYPE_ots("ots", "pplication/vnd.oasis.opendocument.spreadsheet-template"),
FILE_TYPE_ott("ott", "pplication/vnd.oasis.opendocument.text-template"),
FILE_TYPE_owl("owl", "pplication/rdf+xml"),
FILE_TYPE_oxt("oxt", "pplication/vnd.openofficeorg.extension"),
FILE_TYPE_p("p", "ext/x-pascal"),
FILE_TYPE_p10("p10", "pplication/pkcs10"),
FILE_TYPE_p12("p12", "pplication/x-pkcs12"),
FILE_TYPE_p7b("p7b", "pplication/x-pkcs7-certificates"),
FILE_TYPE_p7s("p7s", "pplication/pkcs7-signature"),
FILE_TYPE_pack("pack", "pplication/x-java-pack200"),
FILE_TYPE_pak("pak", "pplication/x-pak"),
FILE_TYPE_par2("par2", "pplication/x-par2"),
FILE_TYPE_pas("pas", "ext/x-pascal"),
FILE_TYPE_patch("patch", "ext/x-patch"),
FILE_TYPE_pbm("pbm", "mage/x-portable-bitmap"),
FILE_TYPE_pcd("pcd", "mage/x-photo-cd"),
FILE_TYPE_pcf("pcf", "pplication/x-cisco-vpn-settings"),
FILE_TYPE_pcfgz("pcf.gz", "pplication/x-font-pcf"),
FILE_TYPE_pcfz("pcf.z", "pplication/x-font-pcf"),
FILE_TYPE_pcl("pcl", "pplication/vnd.hp-pcl"),
FILE_TYPE_pcx("pcx", "mage/x-pcx"),
FILE_TYPE_pdb("pdb", "hemical/x-pdb"),
FILE_TYPE_pdc("pdc", "pplication/x-aportisdoc"),
FILE_TYPE_pdf("pdf", "pplication/pdf"),
FILE_TYPE_pdfbz2("pdf.bz2", "pplication/x-bzpdf"),
FILE_TYPE_pdfgz("pdf.gz", "pplication/x-gzpdf"),
FILE_TYPE_pef("pef", "mage/x-pentax-pef"),
FILE_TYPE_pem("pem", "pplication/x-x509-ca-cert"),
FILE_TYPE_perl("perl", "pplication/x-perl"),
FILE_TYPE_pfa("pfa", "pplication/x-font-type1"),
FILE_TYPE_pfb("pfb", "pplication/x-font-type1"),
FILE_TYPE_pfx("pfx", "pplication/x-pkcs12"),
FILE_TYPE_pgm("pgm", "mage/x-portable-graymap"),
FILE_TYPE_pgn("pgn", "pplication/x-chess-pgn"),
FILE_TYPE_pgp("pgp", "pplication/pgp-encrypted"),
FILE_TYPE_php("php", "pplication/x-php"),
FILE_TYPE_php3("php3", "pplication/x-php"),
FILE_TYPE_php4("php4", "pplication/x-php"),
FILE_TYPE_pict("pict", "mage/x-pict"),
FILE_TYPE_pict1("pict1", "mage/x-pict"),
FILE_TYPE_pict2("pict2", "mage/x-pict"),
FILE_TYPE_pickle("pickle", "pplication/python-pickle"),
FILE_TYPE_pk("pk", "pplication/x-tex-pk"),
FILE_TYPE_pkipath("pkipath", "pplication/pkix-pkipath"),
FILE_TYPE_pkr("pkr", "pplication/pgp-keys"),
FILE_TYPE_pl("pl", "pplication/x-perl"),
FILE_TYPE_pla("pla", "udio/x-iriver-pla"),
FILE_TYPE_pln("pln", "pplication/x-planperfect"),
FILE_TYPE_pls("pls", "udio/x-scpls"),
FILE_TYPE_pm("pm", "pplication/x-perl"),
FILE_TYPE_png("png", "mage/png"),
FILE_TYPE_pnm("pnm", "mage/x-portable-anymap"),
FILE_TYPE_pntg("pntg", "mage/x-macpaint"),
FILE_TYPE_po("po", "ext/x-gettext-translation"),
FILE_TYPE_por("por", "pplication/x-spss-por"),
FILE_TYPE_pot("pot", "ext/x-gettext-translation-template"),
FILE_TYPE_ppm("ppm", "mage/x-portable-pixmap"),
FILE_TYPE_pps("pps", "pplication/vnd.ms-powerpoint"),
FILE_TYPE_ppt("ppt", "pplication/vnd.ms-powerpoint"),
FILE_TYPE_pptm("pptm", "pplication/vnd.openxmlformats-officedocument.presentationml.presentation"),
FILE_TYPE_pptx("pptx", "pplication/vnd.openxmlformats-officedocument.presentationml.presentation"),
FILE_TYPE_ppz("ppz", "pplication/vnd.ms-powerpoint"),
FILE_TYPE_prc("prc", "pplication/x-palm-database"),
FILE_TYPE_ps("ps", "pplication/postscript"),
FILE_TYPE_psbz2("ps.bz2", "pplication/x-bzpostscript"),
FILE_TYPE_psgz("ps.gz", "pplication/x-gzpostscript"),
FILE_TYPE_psd("psd", "mage/vnd.adobe.photoshop"),
FILE_TYPE_psf("psf", "udio/x-psf"),
FILE_TYPE_psfgz("psf.gz", "pplication/x-gz-font-linux-psf"),
FILE_TYPE_psflib("psflib", "udio/x-psflib"),
FILE_TYPE_psid("psid", "udio/prs.sid"),
FILE_TYPE_psw("psw", "pplication/x-pocket-word"),
FILE_TYPE_pw("pw", "pplication/x-pw"),
FILE_TYPE_py("py", "ext/x-python"),
FILE_TYPE_pyc("pyc", "pplication/x-python-bytecode"),
FILE_TYPE_pyo("pyo", "pplication/x-python-bytecode"),
FILE_TYPE_qif("qif", "mage/x-quicktime"),
FILE_TYPE_qt("qt", "ideo/quicktime"),
FILE_TYPE_qtif("qtif", "mage/x-quicktime"),
FILE_TYPE_qtl("qtl", "pplication/x-quicktime-media-link"),
FILE_TYPE_qtvr("qtvr", "ideo/quicktime"),
FILE_TYPE_ra("ra", "udio/vnd.rn-realaudio"),
FILE_TYPE_raf("raf", "mage/x-fuji-raf"),
FILE_TYPE_ram("ram", "pplication/ram"),
FILE_TYPE_rar("rar", "pplication/x-rar"),
FILE_TYPE_ras("ras", "mage/x-cmu-raster"),
FILE_TYPE_raw("raw", "mage/x-panasonic-raw"),
FILE_TYPE_rax("rax", "udio/vnd.rn-realaudio"),
FILE_TYPE_rb("rb", "pplication/x-ruby"),
FILE_TYPE_rdf("rdf", "pplication/rdf+xml"),
FILE_TYPE_rdfs("rdfs", "pplication/rdf+xml"),
FILE_TYPE_reg("reg", "ext/x-ms-regedit"),
FILE_TYPE_rej("rej", "pplication/x-reject"),
FILE_TYPE_rgb("rgb", "mage/x-rgb"),
FILE_TYPE_rle("rle", "mage/rle"),
FILE_TYPE_rm("rm", "pplication/vnd.rn-realmedia"),
FILE_TYPE_rmj("rmj", "pplication/vnd.rn-realmedia"),
FILE_TYPE_rmm("rmm", "pplication/vnd.rn-realmedia"),
FILE_TYPE_rms("rms", "pplication/vnd.rn-realmedia"),
FILE_TYPE_rmvb("rmvb", "pplication/vnd.rn-realmedia"),
FILE_TYPE_rmx("rmx", "pplication/vnd.rn-realmedia"),
FILE_TYPE_roff("roff", "ext/troff"),
FILE_TYPE_rp("rp", "mage/vnd.rn-realpix"),
FILE_TYPE_rpm("rpm", "pplication/x-rpm"),
FILE_TYPE_rss("rss", "pplication/rss+xml"),
FILE_TYPE_rt("rt", "ext/vnd.rn-realtext"),
FILE_TYPE_rtf("rtf", "pplication/rtf"),
FILE_TYPE_rtx("rtx", "ext/richtext"),
FILE_TYPE_rv("rv", "ideo/vnd.rn-realvideo"),
FILE_TYPE_rvx("rvx", "ideo/vnd.rn-realvideo"),
FILE_TYPE_s3m("s3m", "udio/x-s3m"),
FILE_TYPE_sam("sam", "pplication/x-amipro"),
FILE_TYPE_sami("sami", "pplication/x-sami"),
FILE_TYPE_sav("sav", "pplication/x-spss-sav"),
FILE_TYPE_scm("scm", "ext/x-scheme"),
FILE_TYPE_sda("sda", "pplication/vnd.stardivision.draw"),
FILE_TYPE_sdc("sdc", "pplication/vnd.stardivision.calc"),
FILE_TYPE_sdd("sdd", "pplication/vnd.stardivision.impress"),
FILE_TYPE_sdp("sdp", "pplication/sdp"),
FILE_TYPE_sds("sds", "pplication/vnd.stardivision.chart"),
FILE_TYPE_sdw("sdw", "pplication/vnd.stardivision.writer"),
FILE_TYPE_sgf("sgf", "pplication/x-go-sgf"),
FILE_TYPE_sgi("sgi", "mage/x-sgi"),
FILE_TYPE_sgl("sgl", "pplication/vnd.stardivision.writer"),
FILE_TYPE_sgm("sgm", "ext/sgml"),
FILE_TYPE_sgml("sgml", "ext/sgml"),
FILE_TYPE_sh("sh", "pplication/x-shellscript"),
FILE_TYPE_shar("shar", "pplication/x-shar"),
FILE_TYPE_shn("shn", "pplication/x-shorten"),
FILE_TYPE_siag("siag", "pplication/x-siag"),
FILE_TYPE_sid("sid", "udio/prs.sid"),
FILE_TYPE_sik("sik", "pplication/x-trash"),
FILE_TYPE_sis("sis", "pplication/vnd.symbian.install"),
FILE_TYPE_sisx("sisx", "-epoc/x-sisx-app"),
FILE_TYPE_sit("sit", "pplication/x-stuffit"),
FILE_TYPE_siv("siv", "pplication/sieve"),
FILE_TYPE_sk("sk", "mage/x-skencil"),
FILE_TYPE_sk1("sk1", "mage/x-skencil"),
FILE_TYPE_skr("skr", "pplication/pgp-keys"),
FILE_TYPE_slk("slk", "ext/spreadsheet"),
FILE_TYPE_smaf("smaf", "pplication/x-smaf"),
FILE_TYPE_smc("smc", "pplication/x-snes-rom"),
FILE_TYPE_smd("smd", "pplication/vnd.stardivision.mail"),
FILE_TYPE_smf("smf", "pplication/vnd.stardivision.math"),
FILE_TYPE_smi("smi", "pplication/x-sami"),
FILE_TYPE_smil("smil", "pplication/smil"),
FILE_TYPE_sml("sml", "pplication/smil"),
FILE_TYPE_sms("sms", "pplication/x-sms-rom"),
FILE_TYPE_snd("snd", "udio/basic"),
FILE_TYPE_so("so", "pplication/x-sharedlib"),
FILE_TYPE_spc("spc", "pplication/x-pkcs7-certificates"),
FILE_TYPE_spd("spd", "pplication/x-font-speedo"),
FILE_TYPE_spec("spec", "ext/x-rpm-spec"),
FILE_TYPE_spl("spl", "pplication/x-shockwave-flash"),
FILE_TYPE_spx("spx", "udio/x-speex"),
FILE_TYPE_sql("sql", "ext/x-sql"),
FILE_TYPE_sr2("sr2", "mage/x-sony-sr2"),
FILE_TYPE_src("src", "pplication/x-wais-source"),
FILE_TYPE_srf("srf", "mage/x-sony-srf"),
FILE_TYPE_srt("srt", "pplication/x-subrip"),
FILE_TYPE_ssa("ssa", "ext/x-ssa"),
FILE_TYPE_stc("stc", "pplication/vnd.sun.xml.calc.template"),
FILE_TYPE_std("std", "pplication/vnd.sun.xml.draw.template"),
FILE_TYPE_sti("sti", "pplication/vnd.sun.xml.impress.template"),
FILE_TYPE_stm("stm", "udio/x-stm"),
FILE_TYPE_stw("stw", "pplication/vnd.sun.xml.writer.template"),
FILE_TYPE_sty("sty", "ext/x-tex"),
FILE_TYPE_sub("sub", "ext/x-subviewer"),
FILE_TYPE_sun("sun", "mage/x-sun-raster"),
FILE_TYPE_sv4cpio("sv4cpio", "pplication/x-sv4cpio"),
FILE_TYPE_sv4crc("sv4crc", "pplication/x-sv4crc"),
FILE_TYPE_svg("svg", "mage/svg+xml"),
FILE_TYPE_svgz("svgz", "mage/svg+xml-compressed"),
FILE_TYPE_swf("swf", "pplication/x-shockwave-flash"),
FILE_TYPE_sxc("sxc", "pplication/vnd.sun.xml.calc"),
FILE_TYPE_sxd("sxd", "pplication/vnd.sun.xml.draw"),
FILE_TYPE_sxg("sxg", "pplication/vnd.sun.xml.writer.global"),
FILE_TYPE_sxi("sxi", "pplication/vnd.sun.xml.impress"),
FILE_TYPE_sxm("sxm", "pplication/vnd.sun.xml.math"),
FILE_TYPE_sxw("sxw", "pplication/vnd.sun.xml.writer"),
FILE_TYPE_sylk("sylk", "ext/spreadsheet"),
FILE_TYPE_t("t", "ext/troff"),
FILE_TYPE_t2t("t2t", "ext/x-txt2tags"),
FILE_TYPE_tar("tar", "pplication/x-tar"),
FILE_TYPE_tarbz("tar.bz", "pplication/x-bzip-compressed-tar"),
FILE_TYPE_tarbz2("tar.bz2", "pplication/x-bzip-compressed-tar"),
FILE_TYPE_targz("tar.gz", "pplication/x-compressed-tar"),
FILE_TYPE_tarlzma("tar.lzma", "pplication/x-lzma-compressed-tar"),
FILE_TYPE_tarlzo("tar.lzo", "pplication/x-tzo"),
FILE_TYPE_tarxz("tar.xz", "pplication/x-xz-compressed-tar"),
FILE_TYPE_tarz("tar.z", "pplication/x-tarz"),
FILE_TYPE_tbz("tbz", "pplication/x-bzip-compressed-tar"),
FILE_TYPE_tbz2("tbz2", "pplication/x-bzip-compressed-tar"),
FILE_TYPE_tcl("tcl", "ext/x-tcl"),
FILE_TYPE_tex("tex", "ext/x-tex"),
FILE_TYPE_texi("texi", "ext/x-texinfo"),
FILE_TYPE_texinfo("texinfo", "ext/x-texinfo"),
FILE_TYPE_tga("tga", "mage/x-tga"),
FILE_TYPE_tgz("tgz", "pplication/x-compressed-tar"),
FILE_TYPE_theme("theme", "pplication/x-theme"),
FILE_TYPE_themepac("themepack", "pplication/x-windows-themepack"),
FILE_TYPE_tif("tif", "mage/tiff"),
FILE_TYPE_tiff("tiff", "mage/tiff"),
FILE_TYPE_tk("tk", "ext/x-tcl"),
FILE_TYPE_tlz("tlz", "pplication/x-lzma-compressed-tar"),
FILE_TYPE_tnef("tnef", "pplication/vnd.ms-tnef"),
FILE_TYPE_tnf("tnf", "pplication/vnd.ms-tnef"),
FILE_TYPE_toc("toc", "pplication/x-cdrdao-toc"),
FILE_TYPE_torrent("torrent", "pplication/x-bittorrent"),
FILE_TYPE_tpic("tpic", "mage/x-tga"),
FILE_TYPE_tr("tr", "ext/troff"),
FILE_TYPE_ts("ts", "pplication/x-linguist"),
FILE_TYPE_tsv("tsv", "ext/tab-separated-values"),
FILE_TYPE_tta("tta", "udio/x-tta"),
FILE_TYPE_ttc("ttc", "pplication/x-font-ttf"),
FILE_TYPE_ttf("ttf", "pplication/x-font-ttf"),
FILE_TYPE_ttx("ttx", "pplication/x-font-ttx"),
FILE_TYPE_txt("txt", "ext/plain"),
FILE_TYPE_txz("txz", "pplication/x-xz-compressed-tar"),
FILE_TYPE_tzo("tzo", "pplication/x-tzo"),
FILE_TYPE_ufraw("ufraw", "pplication/x-ufraw"),
FILE_TYPE_ui("ui", "pplication/x-designer"),
FILE_TYPE_uil("uil", "ext/x-uil"),
FILE_TYPE_ult("ult", "udio/x-mod"),
FILE_TYPE_uni("uni", "udio/x-mod"),
FILE_TYPE_uri("uri", "ext/x-uri"),
FILE_TYPE_url("url", "ext/x-uri"),
FILE_TYPE_ustar("ustar", "pplication/x-ustar"),
FILE_TYPE_vala("vala", "ext/x-vala"),
FILE_TYPE_vapi("vapi", "ext/x-vala"),
FILE_TYPE_vcf("vcf", "ext/directory"),
FILE_TYPE_vcs("vcs", "ext/calendar"),
FILE_TYPE_vct("vct", "ext/directory"),
FILE_TYPE_vda("vda", "mage/x-tga"),
FILE_TYPE_vhd("vhd", "ext/x-vhdl"),
FILE_TYPE_vhdl("vhdl", "ext/x-vhdl"),
FILE_TYPE_viv("viv", "ideo/vivo"),
FILE_TYPE_vivo("vivo", "ideo/vivo"),
FILE_TYPE_vlc("vlc", "udio/x-mpegurl"),
FILE_TYPE_vob("vob", "ideo/mpeg"),
FILE_TYPE_voc("voc", "udio/x-voc"),
FILE_TYPE_vor("vor", "pplication/vnd.stardivision.writer"),
FILE_TYPE_vst("vst", "mage/x-tga"),
FILE_TYPE_wav("wav", "udio/x-wav"),
FILE_TYPE_wax("wax", "udio/x-ms-asx"),
FILE_TYPE_wb1("wb1", "pplication/x-quattropro"),
FILE_TYPE_wb2("wb2", "pplication/x-quattropro"),
FILE_TYPE_wb3("wb3", "pplication/x-quattropro"),
FILE_TYPE_wbmp("wbmp", "mage/vnd.wap.wbmp"),
FILE_TYPE_wcm("wcm", "pplication/vnd.ms-works"),
FILE_TYPE_wdb("wdb", "pplication/vnd.ms-works"),
FILE_TYPE_webm("webm", "ideo/webm"),
FILE_TYPE_wk1("wk1", "pplication/vnd.lotus-1-2-3"),
FILE_TYPE_wk3("wk3", "pplication/vnd.lotus-1-2-3"),
FILE_TYPE_wk4("wk4", "pplication/vnd.lotus-1-2-3"),
FILE_TYPE_wks("wks", "pplication/vnd.ms-works"),
FILE_TYPE_wma("wma", "udio/x-ms-wma"),
FILE_TYPE_wmf("wmf", "mage/x-wmf"),
FILE_TYPE_wml("wml", "ext/vnd.wap.wml"),
FILE_TYPE_wmls("wmls", "ext/vnd.wap.wmlscript"),
FILE_TYPE_wmv("wmv", "ideo/x-ms-wmv"),
FILE_TYPE_wmx("wmx", "udio/x-ms-asx"),
FILE_TYPE_wp("wp", "pplication/vnd.wordperfect"),
FILE_TYPE_wp4("wp4", "pplication/vnd.wordperfect"),
FILE_TYPE_wp5("wp5", "pplication/vnd.wordperfect"),
FILE_TYPE_wp6("wp6", "pplication/vnd.wordperfect"),
FILE_TYPE_wpd("wpd", "pplication/vnd.wordperfect"),
FILE_TYPE_wpg("wpg", "pplication/x-wpg"),
FILE_TYPE_wpl("wpl", "pplication/vnd.ms-wpl"),
FILE_TYPE_wpp("wpp", "pplication/vnd.wordperfect"),
FILE_TYPE_wps("wps", "pplication/vnd.ms-works"),
FILE_TYPE_wri("wri", "pplication/x-mswrite"),
FILE_TYPE_wrl("wrl", "odel/vrml"),
FILE_TYPE_wv("wv", "udio/x-wavpack"),
FILE_TYPE_wvc("wvc", "udio/x-wavpack-correction"),
FILE_TYPE_wvp("wvp", "udio/x-wavpack"),
FILE_TYPE_wvx("wvx", "udio/x-ms-asx"),
FILE_TYPE_x3f("x3f", "mage/x-sigma-x3f"),
FILE_TYPE_xac("xac", "pplication/x-gnucash"),
FILE_TYPE_xbel("xbel", "pplication/x-xbel"),
FILE_TYPE_xbl("xbl", "pplication/xml"),
FILE_TYPE_xbm("xbm", "mage/x-xbitmap"),
FILE_TYPE_xcf("xcf", "mage/x-xcf"),
FILE_TYPE_xcfbz2("xcf.bz2", "mage/x-compressed-xcf"),
FILE_TYPE_xcfgz("xcf.gz", "mage/x-compressed-xcf"),
FILE_TYPE_xhtml("xhtml", "pplication/xhtml+xml"),
FILE_TYPE_xi("xi", "udio/x-xi"),
FILE_TYPE_xla("xla", "pplication/vnd.ms-excel"),
FILE_TYPE_xlc("xlc", "pplication/vnd.ms-excel"),
FILE_TYPE_xld("xld", "pplication/vnd.ms-excel"),
FILE_TYPE_xlf("xlf", "pplication/x-xliff"),
FILE_TYPE_xliff("xliff", "pplication/x-xliff"),
FILE_TYPE_xll("xll", "pplication/vnd.ms-excel"),
FILE_TYPE_xlm("xlm", "pplication/vnd.ms-excel"),
FILE_TYPE_xlsm("xlsm", "pplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet"),
FILE_TYPE_xlt("xlt", "pplication/vnd.ms-excel"),
FILE_TYPE_xlw("xlw", "pplication/vnd.ms-excel"),
FILE_TYPE_xm("xm", "udio/x-xm"),
FILE_TYPE_xmf("xmf", "udio/x-xmf"),
FILE_TYPE_xmi("xmi", "ext/x-xmi"),
FILE_TYPE_xml("xml", "pplication/xml"),
FILE_TYPE_xpm("xpm", "mage/x-xpixmap"),
FILE_TYPE_xps("xps", "pplication/vnd.ms-xpsdocument"),
FILE_TYPE_xsl("xsl", "pplication/xml"),
FILE_TYPE_xslfo("xslfo", "ext/x-xslfo"),
FILE_TYPE_xslt("xslt", "pplication/xml"),
FILE_TYPE_xspf("xspf", "pplication/xspf+xml"),
FILE_TYPE_xul("xul", "pplication/vnd.mozilla.xul+xml"),
FILE_TYPE_xwd("xwd", "mage/x-xwindowdump"),
FILE_TYPE_xyz("xyz", "hemical/x-pdb"),
FILE_TYPE_xz("xz", "pplication/x-xz"),
FILE_TYPE_w2p("w2p", "pplication/w2p"),
FILE_TYPE_z("z", "pplication/x-compress"),
FILE_TYPE_zabw("zabw", "pplication/x-abiword"),
FILE_TYPE_zip("zip", "pplication/zip"),
FILE_TYPE_zoo("zoo", "pplication/x-zoo"),
;
//文件类型
private String fileType;
private String contentType;
FileTypeEnum(String fileType, String contentType) {
this.fileType = fileType;
this.contentType = contentType;
}
public static String getContentType(String fileType) {
for (FileTypeEnum e : FileTypeEnum.values()) {
if (e.getFileType().equals(fileType)) {
return e.getContentType();
}
}
return "";
}
/**
* 获取fileType
*
* @param contentType
* @return
*/
public static String getFileType(String contentType) {
for (FileTypeEnum value : FileTypeEnum.values()) {
if (value.getContentType().equals(contentType)) {
return value.getFileType();
}
}
return null;
}
public String getFileType() {
return fileType;
}
public String getContentType() {
return contentType;
}
}
上传oss操作
/**
* 异步上传OSS文件
*
* @param bucketName
* @param objectName
* @param stream
* @return
*/
@Async("asyncServiceExecutor")
public Future<Boolean> asyncUploadOSSDoc(String bucketName, String objectName, InputStream stream) {
File output = null;
try {
long toss1 = System.currentTimeMillis();
//压缩7z
Map map = compressUtil.compress7z(stream, objectName);
InputStream in = (InputStream) map.get("in");
output = (File) map.get("output");
//注意 下面的objectName需要换成map里面的objectName参数,本代码不换是因为历史原因。
ossTemplate.putObject(bucketName, objectName, in);
long toss2 = System.currentTimeMillis();
log.info("上传OSS文件耗时:{}毫秒", toss2 - toss1);
} catch (Exception e) {
log.error("上传OSS文件失败:{},{},失败信息:", bucketName, objectName, e);
return new AsyncResult<>(Boolean.FALSE);
} finally {
try {
if (stream != null) {
stream.close();
}
} catch (Exception closeException) {
}
try {
output.delete();
} catch (Exception e) {
e.printStackTrace();
}
}
return new AsyncResult<>(Boolean.TRUE);
}
通过以上操作可以将文件压缩成7z上传到oss上,解压缩方式如下
@PostMapping(value = "/detail")
public HttpResult<String> findVchExecutelog(@RequestBody VchExecutelogCondition condition) {
HttpResult<String> result = new HttpResult<>();
InputStream in = null;
S3Object s3Object = null;
File targetFile = null;
try {
if (condition == null) {
log.info("findVchExecutelog|interface|入参为空");
return HttpResult.asResponse(WebErrorCode.SYS_PARAM_ERROR);
}
//input为压缩文件存放地址
s3Object = ossTemplate.getObject(bucketName, condition.getInput());
Map map = compressUtil.deCompress(s3Object.getObjectContent());
in = (InputStream) map.get("inputstream");
targetFile = (File) map.get("targetFile");
return HttpResult.successResponse(IOUtils.toString(in, "utf-8"));
} catch (Exception e) {
e.printStackTrace();
log.info("findVchExecutelog|interface|数据查询失败,入参:{}", JsonUtil.toJson(condition));
return HttpResult.asResponse(DefaultErrorCode.UNKNOWN_ERROR);
} finally {
//关闭oss流
IOUtils.closeQuietly(s3Object);
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
if (Objects.nonNull(targetFile)) {
targetFile.delete();
}
}
}