Discussion:
[S3tools-general] please verify my understanding of how s3cmd mime type assignment works
WagnerOne
2014-05-21 22:50:10 UTC
Permalink
Hello,

I am attempting to verify my understanding of how mime type assignment works in s3cmd. I'm hoping this post will make this detail easier to find for others seeking it too.

I looked at the S3.py code and surmised that the "python-magic" module will attempt to be used if present. If it is not present, a warning:

"WARNING: Module python-magic is not available. Guessing MIME types based on file extensions."

will be issued and s3cmd will guess the mime type for application by use of the "mimetypes" module.

As I understand, the "mimetypes" module (which seems to be a stock python module) looks to the OS for a mime type mapping file and uses that to assign mime types to files uploaded to S3.

On my AWS linux S3 uploading host, that file seems to be /etc/mime.types, which appears to be a fully fledged map file and appropriate for this use.

Is this understanding accurate?

Thanks,
Mike

# python
Python 2.6.9 (unknown, Mar 28 2014, 00:06:37)
[GCC 4.8.2 20131212 (Red Hat 4.8.2-7)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
import mimetypes
mimetypes.init()
mimetypes.knownfiles
['/etc/mime.types', '/etc/httpd/mime.types', '/etc/httpd/conf/mime.types', '/etc/apache/mime.types', '/etc/apache2/mime.types', '/usr/local/etc/httpd/conf/mime.types', '/usr/local/lib/netscape/mime.types', '/usr/local/etc/httpd/conf/mime.types', '/usr/local/etc/mime.types']
Loading...