Mime类型收集

网方网站:http://www.mimetype.org/

 

 

Mime-Typ
Dateiendung(en)
Bedeutung
application/acad
*.dwg
AutoCAD-Dateien (nach NCSA)
application/applefile
AppleFile-Dateien
application/astound
*.asd *.asn
Astound-Dateien
application/dsptype
*.tsp
TSP-Dateien
application/dxf
*.dxf
AutoCAD-Dateien (nach CERN)
application/futuresplash
*.spl
Flash Futuresplash-Dateien
application/gzip
*.gz
GNU Zip-Dateien
application/listenup
*.ptlk
Listenup-Dateien
application/mac-binhex40
*.hqx
Macintosh Binär-Dateien
application/mbedlet
*.mbd
Mbedlet-Dateien
application/mif
*.mif
FrameMaker Interchange Format Dateien
application/msexcel
*.xls *.xla
Microsoft Excel Dateien
application/mshelp
*.hlp *.chm
Microsoft Windows Hilfe Dateien
application/mspowerpoint
*.ppt *.ppz *.pps *.pot
Microsoft Powerpoint Dateien
application/msword
*.doc *.dot
Microsoft Word Dateien
application/octet-stream
*.bin *.exe *.com *.dll *.class
Ausführbare Dateien
application/oda
*.oda
Oda-Dateien
application/pdf
*.pdf
Adobe PDF-Dateien
application/postscript
*.ai *.eps *.ps
Adobe Postscript-Dateien
application/rtc
*.rtc
RTC-Dateien
application/rtf
*.rtf
Microsoft RTF-Dateien
application/studiom
*.smp
Studiom-Dateien
application/toolbook
*.tbk
Toolbook-Dateien
application/vocaltec-media-desc
*.vmd
Vocaltec Mediadesc-Dateien
application/vocaltec-media-file
*.vmf
Vocaltec Media-Dateien
application/x-bcpio
*.bcpio
BCPIO-Dateien
application/x-compress
*.z
-Dateien
application/x-cpio
*.cpio
CPIO-Dateien
application/x-csh
*.csh
C-Shellscript-Dateien
application/x-director
*.dcr *.dir *.dxr
-Dateien
application/x-dvi
*.dvi
DVI-Dateien
application/x-envoy
*.evy
Envoy-Dateien
application/x-gtar
*.gtar
GNU tar-Archiv-Dateien
application/x-hdf
*.hdf
HDF-Dateien
application/x-httpd-php
*.php *.phtml
PHP-Dateien
application/x-javascript
*.js
serverseitige JavaScript-Dateien
application/x-latex
*.latex
Latex-Quelldateien
application/x-macbinary
*.bin
Macintosh Binärdateien
application/x-mif
*.mif
FrameMaker Interchange Format Dateien
application/x-netcdf
*.nc *.cdf
Unidata CDF-Dateien
application/x-nschat
*.nsc
NS Chat-Dateien
application/x-sh
*.sh
Bourne Shellscript-Dateien
application/x-shar
*.shar
Shell-Archiv-Dateien
application/x-shockwave-flash
*.swf *.cab
Flash Shockwave-Dateien
application/x-sprite
*.spr *.sprite
Sprite-Dateien
application/x-stuffit
*.sit
Stuffit-Dateien
application/x-supercard
*.sca
Supercard-Dateien
application/x-sv4cpio
*.sv4cpio
CPIO-Dateien
application/x-sv4crc
*.sv4crc
CPIO-Dateien mit CRC
application/x-tar
*.tar
tar-Archivdateien
application/x-tcl
*.tcl
TCL Scriptdateien
application/x-tex
*.tex
TEX-Dateien
application/x-texinfo
*.texinfo *.texi
TEXinfo-Dateien
application/x-troff
*.t *.tr *.roff
TROFF-Dateien (Unix)
application/x-troff-man
*.man *.troff
TROFF-Dateien mit MAN-Makros (Unix)
application/x-troff-me
*.me *.troff
TROFF-Dateien mit ME-Makros (Unix)
application/x-troff-ms
*.me *.troff
TROFF-Dateien mit MS-Makros (Unix)
application/x-ustar
*.ustar
tar-Archivdateien (Posix)
application/x-wais-source
*.src
WAIS Quelldateien
application/x-www-form-urlencoded
HTML-Formulardaten an CGI
application/zip
*.zip
ZIP-Archivdateien
audio/basic
*.au *.snd
Sound-Dateien
audio/echospeech
*.es
Echospeed-Dateien
audio/tsplayer
*.tsi
TS-Player-Dateien
audio/voxware
*.vox
Vox-Dateien
audio/x-aiff
*.aif *.aiff *.aifc
AIFF-Sound-Dateien
audio/x-dspeeh
*.dus *.cht
Sprachdateien
audio/x-midi
*.mid *.midi
MIDI-Dateien
audio/x-mpeg
*.mp2
MPEG-Dateien
audio/x-pn-realaudio
*.ram *.ra
RealAudio-Dateien
audio/x-pn-realaudio-plugin
*.rpm
RealAudio-Plugin-Dateien
audio/x-qt-stream
*.stream
-Dateien
audio/x-wav
*.wav
Wav-Dateien
drawing/x-dwf
*.dwf
Drawing-Dateien
image/cis-cod
*.cod
CIS-Cod-Dateien
image/cmu-raster
*.ras
CMU-Raster-Dateien
image/fif
*.fif
FIF-Dateien
image/gif
*.gif
GIF-Dateien
image/ief
*.ief
IEF-Dateien
image/jpeg
*.jpeg *.jpg *.jpe
JPEG-Dateien
image/tiff
*.tiff *.tif
TIFF-Dateien
image/vasa
*.mcf
Vasa-Dateien
image/vnd.wap.wbmp
*.wbmp
Bitmap-Dateien (WAP)
image/x-freehand
*.fh4 *.fh5 *.fhc
Freehand-Dateien
image/x-portable-anymap
*.pnm
PBM Anymap Dateien
image/x-portable-bitmap
*.pbm
PBM Bitmap Dateien
image/x-portable-graymap
*.pgm
PBM Graymap Dateien
image/x-portable-pixmap
*.ppm
PBM Pixmap Dateien
image/x-rgb
*.rgb
RGB-Dateien
image/x-windowdump
*.xwd
X-Windows Dump
image/x-xbitmap
*.xbm
XBM-Dateien
image/x-xpixmap
*.xpm
XPM-Dateien
message/external-body
Nachricht mit externem Inhalt
message/http
HTTP-Headernachricht
message/news
Newsgroup-Nachricht
message/partial
Nachricht mit Teilinhalt
message/rfc822
Nachricht nach RFC 1822
model/vrml
*.wrl
Visualisierung virtueller Welten
multipart/alternative
mehrteilige Daten gemischt
multipart/byteranges
mehrteilige Daten mit Byte-Angaben
multipart/digest
mehrteilige Daten / Auswahl
multipart/encrypted
mehrteilige Daten verschlüsselt
multipart/form-data
mehrteilige Daten aus HTML-Formular (z.B. File-Upload)
multipart/mixed
mehrteilige Daten gemischt
multipart/parallel
mehrteilige Daten parallel
multipart/related
mehrteilige Daten / verbunden
multipart/report
mehrteilige Daten / Bericht
multipart/signed
mehrteilige Daten / bezeichnet
multipart/voice-message
mehrteilige Daten / Sprachnachricht
text/comma-separated-values
*.csv
komma-separierte Datendateien
text/css
*.css
CSS Stylesheet-Dateien
text/html
*.htm *.html *.shtml
-Dateien
text/javascript
*.js
JavaScript-Dateien
text/plain
*.txt
reine Textdateien
text/richtext
*.rtx
Richtext-Dateien
text/rtf
*.rtf
Microsoft RTF-Dateien
text/tab-separated-values
*.tsv
tabulator-separierte Datendateien
text/vnd.wap.wml
*.wml
WML-Dateien (WAP)
application/vnd.wap.wmlc
*.wmlc
WMLC-Dateien (WAP)
text/vnd.wap.wmlscript
*.wmls
WML-Scriptdateien (WAP)
 application/vnd.wap.wmlscriptc
*.wmlsc
WML-Script-C-dateien (WAP)
text/xml-external-parsed-entity
extern geparste XML-Dateien
text/x-setext
*.etx
SeText-Dateien
text/x-sgml
*.sgm *.sgml
SGML-Dateien
text/x-speech
*.talk *.spc
Speech-Dateien
video/mpeg
*.mpeg *.mpg *.mpe
MPEG-Dateien
video/quicktime
*.qt *.mov
Quicktime-Dateien
video/vnd.vivo
*viv *.vivo
Vivo-Dateien
video/x-msvideo
*.avi
Microsoft AVI-Dateien
video/x-sgi-movie
*.movie
Movie-Dateien
workbook/formulaone
*.vts *.vtts
FormulaOne-Dateien
x-world/x-3dmf
*.3dmf *.3dm *.qd3d *.qd3
3DMF-Dateien
x-world/x-vrml
*.wrl
VRML-Dateien

<think>好的,我现在需要解决用户提出的关于Java中的`java.lang.IllegalArgumentException: MIME type may not contain reserved characters`异常的问题。首先,我要理解这个异常的含义以及它通常在什么情况下被抛出。用户可能是在使用某些HTTP客户端库,比如Apache HttpClient,或者在处理MIME类型时遇到了这个问题。 首先,我应该回顾MIME类型的基本规则。MIME类型类型和子类型组成,例如`text/plain`,中间用斜杠分隔。根据RFC标准,MIME类型中不允许包含空格、特殊字符如引号、括号等保留字符。如果用户提供的MIME类型字符串中包含这些非法字符,就会触发这个异常。 接下来,我需要考虑用户可能遇到的具体场景。例如,在设置HTTP请求的Content-Type头时,或者在创建某种实体(如StringEntity)时指定了不正确的MIME类型。常见的错误可能包括拼写错误,错误地添加了字符集参数而没有正确格式化,或者在MIME类型中误用了不允许的字符。 然后,我需要收集可能导致此异常的具体原因。比如: 1. MIME类型字符串中有空格,例如误写成`text/plain charset=UTF-8`而不是正确的`text/plain; charset=UTF-8`。 2. 使用了特殊字符,如引号、括号、逗号等。 3. 格式错误,比如缺少斜杠,或者类型和子类型之间用了其他符号。 4. 在MIME类型中错误地添加了注释或其他非标准内容。 接下来,我需要提供解决方案和示例代码。例如,如何正确构造MIME类型字符串,如何添加参数如charset,以及如何避免非法字符。同时,可能需要指出使用标准库中的ContentType类来帮助正确构建MIME类型,减少手动构造时的错误。 另外,用户可能需要了解如何调试和验证他们当前的MIME类型是否符合规范。例如,打印出MIME类型字符串,检查是否有非法字符,或者使用正则表达式进行验证。 最后,我应该考虑用户可能的后续问题,比如如何正确处理带参数的MIME类型,或者在多部分表单上传时的正确格式,确保用户能够全面理解并避免类似的错误。</think>在处理Java网络编程时遇到`java.lang.IllegalArgumentException: MIME type may not contain reserved characters`异常,通常与MIME类型格式错误相关。以下是详细解析和解决方案: --- ### 一、异常原因分析 该异常表明**MIME类型字符串包含非法字符**,主要发生在以下场景: 1. **HTTP请求头设置**:`Content-Type`或`Accept`头的值包含保留字符 2. **文件类型操作**:创建`MimeType`对象或处理文件上传时格式错误 3. **参数拼接错误**:在MIME类型中错误添加参数(如`charset`) --- ### 二、MIME类型规范要点 根据RFC 2045标准: - **基础格式**:`type/subtype` - **合法字符**:ASCII字母、数字及`!`, `#`, `$`, `&`, `^`, `_`, `-`, `+`等 - **禁止字符**:空格、`()`, `<>`, `@`, `,`, `;`, `:`, `"`, `/`, `?`, `=`等 --- ### 三、典型错误场景及修复 #### 场景1:直接拼接参数导致空格 ```java // 错误写法(空格非法) String mime = "text/plain charset=UTF-8"; // 正确写法(使用分号分隔参数) String mime = "text/plain; charset=UTF-8"; ``` #### 场景2:包含非法符号 ```java // 错误写法(包含括号) String mime = "application/vnd.ms-excel(xlsx)"; // 正确写法 String mime = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; ``` #### 场景3:参数格式错误 ```java // 错误写法(使用逗号分隔参数) String mime = "multipart/form-data, boundary=abc123"; // 正确写法(使用分号) String mime = "multipart/form-data; boundary=abc123"; ``` --- ### 四、推荐解决方案 #### 方案1:使用ContentType工具类(Apache HttpClient) ```java // 自动处理参数编码 ContentType contentType = ContentType.create("text/html", "UTF-8"); StringEntity entity = new StringEntity("<html>内容</html>", contentType); HttpPost post = new HttpPost(url); post.setEntity(entity); ``` #### 方案2:参数标准化处理 ```java // 自动验证MIME类型 MimeType mime = new MimeType("application", "json"); mime.setParameter("charset", "UTF-8"); // 自动处理特殊字符 // 获取规范化的字符串 String validMimeType = mime.toString(); // 输出:application/json; charset=UTF-8 ``` #### 方案3:正则表达式验证 ```java public static boolean isValidMimeType(String mime) { String pattern = "^[\\w-]+/[\\w-]+(;[\\w-]+=([\\w-]+|\\\"[^\\\"]*\\\"))?$"; return mime.matches(pattern); } // 使用示例 if (!isValidMimeType(inputMime)) { throw new IllegalArgumentException("非法MIME类型格式"); } ``` --- ### 五、调试技巧 1. **十六进制检查**: ```java // 打印字符的ASCII码 for (char c : mimeType.toCharArray()) { System.out.printf("%c -> 0x%02X\n", c, (int)c); } ``` 2. **RFC规范验证**: ```java try { new MimeType(mimeString); } catch (InvalidMimeTypeException e) { System.out.println("错误定位:" + e.getMessage()); } ``` 3. **边界值测试**: ```java // 测试特殊边界案例 testMime("application/atom+xml"); // 合法 testMime("text/plain; version=1.0"); // 合法 testMime("image/svg+xml; param=<>"); // 非法 ``` --- ### 六、高级应用注意事项 1. **多部分表单处理**: ```java // 正确设置multipart边界 MultipartEntityBuilder.create() .setBoundary("----WebKitFormBoundary7MA4YWxkTrZu0gW") .addPart("file", new FileBody(file, ContentType.DEFAULT_BINARY)) .build(); ``` 2. **自定义MIME类型注册**: ```java // 注册非标准MIME类型 MimeTypeRegistry.registerMimeType("application/x-protobuf", "proto"); ``` 3. **国际化字符处理**: ```java // 非ASCII参数需要编码 String encodedValue = URLEncoder.encode("中文参数", StandardCharsets.UTF_8); String mime = "text/plain; desc=" + encodedValue; ``` --- ### 七、常见问题排查表 | 现象 | 可能原因 | 解决方案 | |------|----------|----------| | 报错包含空格 | 参数分隔使用空格而非分号 | 替换空格为`;` | | 中文乱码 | 未进行URL编码 | 使用`URLEncoder.encode()` | | 边界符错误 | multipart边界包含非法字符 | 使用字母数字组合 | | 版本号错误 | 使用`v1.0`而非`version=1.0` | 遵循`key=value`格式 | 通过以上方法可有效解决MIME类型相关的非法参数异常问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值