Hey,
This is a patch which will determine the content type if null based on
file extension. I used the file extension mapping from
$TOMCAT_HOME/conf/web.xml. As a side note, I'm having trouble sending gif
files. Any thoughts or a kick in the right direction would be helpful.
Thanks and Hope It Helps
Eric
--- FilePart.java.orig 2003-06-18 22:18:41.000000000 -0400
+++ FilePart.java 2003-06-18 22:01:49.000000000 -0400
@@ -1,5 +1,5 @@
/*
- * $Header:
/home/cvspublic/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/methods/multipart/FilePart.java,v
1.14 2003/03/16 12:05:03 olegk Exp $
+ * $Header:
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/methods/multipart/FilePart.java,v
1.14 2003/03/16 12:05:03 olegk Exp $
* $Revision: 1.14 $
* $Date: 2003/03/16 12:05:03 $
*
@@ -121,6 +121,141 @@
/** Content encoding of the file part. */
private String charset;
+ /** Mime Type mappings 'liberated' from Tomcat4.1.18/conf/web.xml*/
+ public static final String[][] MIME_TYPE_MAPPINGS =
+ { { "abs", "audio/x-mpeg" },
+ { "ai", "application/postscript" },
+ { "aif", "audio/x-aiff" },
+ { "aifc", "audio/x-aiff" },
+ { "aiff", "audio/x-aiff" },
+ { "aim", "application/x-aim" },
+ { "art", "image/x-jg" },
+ { "asf", "video/x-ms-asf" },
+ { "asx", "video/x-ms-asf" },
+ { "au", "audio/basic" },
+ { "avi", "video/x-msvideo" },
+ { "avx", "video/x-rad-screenplay" },
+ { "bcpio", "application/x-bcpio" },
+ { "bin", "application/octet-stream" },
+ { "bmp", "image/bmp" },
+ { "body", "text/html" },
+ { "cdf", "application/x-cdf" },
+ { "cer", "application/x-x509-ca-cert" },
+ { "class", "application/java" },
+ { "cpio", "application/x-cpio" },
+ { "csh", "application/x-csh" },
+ { "css", "text/css" },
+ { "dib", "image/bmp" },
+ { "doc", "application/msword" },
+ { "dtd", "text/plain" },
+ { "dv", "video/x-dv" },
+ { "dvi", "application/x-dvi" },
+ { "eps", "application/postscript" },
+ { "etx", "text/x-setext" },
+ { "exe", "application/octet-stream" },
+ { "gif", "image/gif" },
+ { "gtar", "application/x-gtar" },
+ { "gz", "application/x-gzip" },
+ { "hdf", "application/x-hdf" },
+ { "hqx", "application/mac-binhex40" },
+ { "htc", "text/x-component" },
+ { "htm", "text/html" },
+ { "html", "text/html" },
+ { "hqx", "application/mac-binhex40" },
+ { "ief", "image/ief" },
+ { "jad", "text/vnd.sun.j2me.app-descriptor" },
+ { "jar", "application/java-archive" },
+ { "java", "text/plain" },
+ { "jnlp", "application/x-java-jnlp-file" },
+ { "jpe", "image/jpeg" },
+ { "jpeg", "image/jpeg" },
+ { "jpg", "image/jpeg" },
+ { "js", "text/javascript" },
+ { "jsf", "text/plain" },
+ { "jspf", "text/plain" },
+ { "kar", "audio/x-midi" },
+ { "latex", "application/x-latex" },
+ { "m3u", "audio/x-mpegurl" },
+ { "mac", "image/x-macpaint" },
+ { "man", "application/x-troff-man" },
+ { "me", "application/x-troff-me" },
+ { "mid", "audio/x-midi" },
+ { "midi", "audio/x-midi" },
+ { "mif", "application/x-mif" },
+ { "mov", "video/quicktime" },
+ { "movie", "video/x-sgi-movie" },
+ { "mp1", "audio/x-mpeg" },
+ { "mp2", "audio/x-mpeg" },
+ { "mp3", "audio/x-mpeg" },
+ { "mpa", "audio/x-mpeg" },
+ { "mpe", "video/mpeg" },
+ { "mpeg", "video/mpeg" },
+ { "mpega", "audio/x-mpeg" },
+ { "mpg", "video/mpeg" },
+ { "mpv2", "video/mpeg2" },
+ { "ms", "application/x-wais-source" },
+ { "nc", "application/x-netcdf" },
+ { "oda", "application/oda" },
+ { "pbm", "image/x-portable-bitmap" },
+ { "pct", "image/pict" },
+ { "pdf", "application/pdf" },
+ { "pgm", "image/x-portable-graymap" },
+ { "pic", "image/pict" },
+ { "pict", "image/pict" },
+ { "pls", "audio/x-scpls" },
+ { "png", "image/png" },
+ { "pnm", "image/x-portable-anymap" },
+ { "pnt", "image/x-macpaint" },
+ { "ppm", "image/x-portable-pixmap" },
+ { "ps", "application/postscript" },
+ { "psd", "image/x-photoshop" },
+ { "qt", "video/quicktime" },
+ { "qti", "image/x-quicktime" },
+ { "qtif", "image/x-quicktime" },
+ { "ras", "image/x-cmu-raster" },
+ { "rgb", "image/x-rgb" },
+ { "rm", "application/vnd.rn-realmedia" },
+ { "roff", "application/x-troff" },
+ { "rtf", "application/rtf" },
+ { "rtx", "text/richtext" },
+ { "sh", "application/x-sh" },
+ { "shar", "application/x-shar" },
+ { "smf", "audio/x-midi" },
+ { "snd", "audio/basic" },
+ { "src", "application/x-wais-source" },
+ { "sv4cpio", "application/x-sv4cpio" },
+ { "sv4crc", "application/x-sv4crc" },
+ { "swf", "application/x-shockwave-flash" },
+ { "t", "application/x-troff" },
+ { "tar", "application/x-tar" },
+ { "tcl", "application/x-tcl" },
+ { "tex", "application/x-tex" },
+ { "texi", "application/x-texinfo" },
+ { "texinfo", "application/x-texinfo" },
+ { "tif", "image/tiff" },
+ { "tiff", "image/tiff" },
+ { "tr", "application/x-troff" },
+ { "tsv", "text/tab-separated-values" },
+ { "txt", "text/plain" },
+ { "ulw", "audio/basic" },
+ { "ustar", "application/x-ustar" },
+ { "xbm", "image/x-xbitmap" },
+ { "xml", "text/xml" },
+ { "xpm", "image/x-xpixmap" },
+ { "xsl", "text/xml" },
+ { "xwd", "image/x-xwindowdump" },
+ { "wav", "audio/x-wav" },
+ { "svg", "image/svg+xml" },
+ { "svgz", "image/svg+xml" },
+ { "wbmp", "image/vnd.wap.wbmp" },
+ { "wml", "text/vnd.wap.wml" },
+ { "wmlc", "application/vnd.wap.wmlc" },
+ { "wmls", "text/vnd.wap.wmlscript" },
+ { "wmlscriptc", "application/vnd.wap.wmlscriptc" },
+ { "wrl", "x-world/x-vrml" },
+ { "Z", "application/x-compress" },
+ { "z", "application/x-compress" },
+ { "zip", "application/zip" } };
/**
* FilePart Constructor.
*
@@ -145,8 +280,25 @@
if (contentType != null) {
this.contentType = contentType;
} else {
- this.contentType = DEFAULT_CONTENT_TYPE;
+ this.contentType = DEFAULT_CONTENT_TYPE;
+
+ String fileName = partSource.getFileName();
+ if ( fileName != null ) {
+ int extensionIndex = fileName.lastIndexOf( '.' );
+ if ( extensionIndex != -1 ) {
+ if ( extensionIndex + 1 < fileName.length() ) {
+ String extension = fileName.substring(
extensionIndex + 1 );
+ for( int i = 0; i <
MIME_TYPE_MAPPINGS.length; i++ ) {
+ if ( extension.equals(
MIME_TYPE_MAPPINGS[i][0] ) ) {
+ this.contentType =
MIME_TYPE_MAPPINGS[i][1];
+ break;
+ }
+ }
+ }
+ }
+ }
}
+
this.charset = charset;
}
@@ -298,6 +450,7 @@
int len;
while ((len = instream.read(tmp)) >= 0) {
out.write(tmp, 0, len);
+ out.flush();
}
} finally {
// we're done with the stream, close it
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]