www.webdeveloper.com
Page 1 of 2 12 LastLast
Results 1 to 15 of 31

Thread: Is your docx file turning into a zip? - SOLUTION

Hybrid View

  1. #1
    Join Date
    Apr 2007
    Location
    Seattle, WA
    Posts
    53

    Thumbs up Is your docx file turning into a zip? - SOLUTION

    In an attempt to save someone some heartache, I'm going to write up about a problem that I've seen, but hasn't been well documented. The new Office 2007 file extensions (docx,potx,xlsx,etc) turning into ZIP files when they are uploaded to a web server and then downloaded.

    The new Office 2007 file formats are now using an Open XML file format system so they are more compatible with other office programs from Google, Open Office...etc. Essentially they are ZIP files that are full of XML files that when opened with the a proper application turn into a friendly word document. While that's pretty nice of Microsoft, they haven't been to good about release MIME type information for these file formats which can cause some interesting issues when trying to upload and download them to a webserver.

    I stumbled onto this problem while I was working with MediaWiki. I was uploading Office 2007 files (docx to be precise) and when my co-workers went to download them on Vista, they would save as .zip files. When they tried to open them up they were just a bunch of XML files which to the untrained eye would be a bunch of gobbledygook.

    I was tasked with solving this problem. After searching the internet for a good 2 hours I stumbled onto a post on a DRUPAL blog. Someone was asking about this problem using Drupal. So I thought, what do Drupal and MediaWiki have in common...php/mysql backend was what I came up with.

    So after doing some more research I found a blog post written by Dave Overton. He was trying to solve that same problem for a local SBS server. He found a solution that involved the MIME Types on the server. The lightbulb went off.

    Since Office 2007 is new and Vista is new a web server isn't going to know what application runs what file extension. At some point Microsoft will release an update (I hope) but until them we can just add in the appropriate MIME Types to our web servers and that should give us the results we want.

    I put up the list of office 2007 file extensions and their MIME Types on to the server hosting my MediaWiki and just like that everything worked. Here is the list of Office 2007 MIME type associations you can add if you run into this same problem.

    Code:
    ".manifest", "application/manifest"
    ".xaml", "application/xaml+xml", 
    ".application",  "application/x-ms-application", 
    ".deploy", "application/octet-stream"
    ".xbap", "application/x-ms-xbap"
    
    ".docm","application/vnd.ms-word.document.macroEnabled.12" 
    ".docx","application/vnd.openxmlformats-officedocument.wordprocessingml.document" 
    ".dotm","application/vnd.ms-word.template.macroEnabled.12" 
    ".dotx","application/vnd.openxmlformats-officedocument.wordprocessingml.template" 
    ".potm","application/vnd.ms-powerpoint.template.macroEnabled.12" 
    ".potx","application/vnd.openxmlformats-officedocument.presentationml.template" 
    ".ppam","application/vnd.ms-powerpoint.addin.macroEnabled.12" 
    ".ppsm","application/vnd.ms-powerpoint.slideshow.macroEnabled.12" 
    ".ppsx","application/vnd.openxmlformats-officedocument.presentationml.slideshow" 
    ".pptm","application/vnd.ms-powerpoint.presentation.macroEnabled.12" 
    ".pptx","application/vnd.openxmlformats-officedocument.presentationml.presentation" 
    ".xlam","application/vnd.ms-excel.addin.macroEnabled.12" 
    ".xlsb","application/vnd.ms-excel.sheet.binary.macroEnabled.12" 
    ".xlsm","application/vnd.ms-excel.sheet.macroEnabled.12" 
    ".xlsx","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" 
    ".xltm","application/vnd.ms-excel.template.macroEnabled.12" 
    ".xltx","application/vnd.openxmlformats-officedocument.spreadsheetml.template"

  2. #2
    Join Date
    Jun 2008
    Location
    Orlando, FL
    Posts
    3

    Thumbs up

    So yeah, to make this work in apache, throw up a file called .htaccess in the web root of whatever site you want to change and throw this crap in it:

    Code:
    AddType application/vnd.ms-word.document.macroEnabled.12 .docm
    AddType application/vnd.openxmlformats-officedocument.wordprocessingml.document docx
    AddType application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx
    AddType application/vnd.ms-powerpoint.template.macroEnabled.12 potm
    AddType application/vnd.openxmlformats-officedocument.presentationml.template potx
    AddType application/vnd.ms-powerpoint.addin.macroEnabled.12 ppam
    AddType application/vnd.ms-powerpoint.slideshow.macroEnabled.12 ppsm
    AddType application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx
    AddType application/vnd.ms-powerpoint.presentation.macroEnabled.12 pptm
    AddType application/vnd.openxmlformats-officedocument.presentationml.presentation pptx
    AddType application/vnd.ms-excel.addin.macroEnabled.12 xlam
    AddType application/vnd.ms-excel.sheet.binary.macroEnabled.12 xlsb
    AddType application/vnd.ms-excel.sheet.macroEnabled.12 xlsm
    AddType application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx
    AddType application/vnd.ms-excel.template.macroEnabled.12 xltm
    AddType application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx
    and it'll work. thanks to the op! been looking for that for a while!

  3. #3
    Join Date
    Jun 2008
    Posts
    3

    Red face .htaccess

    Hi,

    I am pretty new to this and am using Drupal. We uploaded a .xlsm file and when someone tries opening it, it opens in ZiP and the content is not what we uploaded.

    I tried what was suggested however the .htaccess file already exists in the root.

    What do you recommend? Should I append the existing file?

    I actually tried that and restarted Apache but no-go...

    thoughts?

  4. #4
    Join Date
    Jun 2008
    Location
    Orlando, FL
    Posts
    3
    not sure what could be the issue then - post your .htaccess file here and we'll take a look?

    what version of apache are you using?

  5. #5
    Join Date
    Jun 2008
    Posts
    3

    Red face .htaccess file

    Thank you,
    Keep in mind, all I did was add to the file what was recommended (see below)


    #
    # Apache/PHP/Drupal settings:
    #

    # Protect files and directories from prying eyes.
    <FilesMatch "(\.(engine|inc|info|install|module|profile|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)|code-style\.pl|Entries.*|Repository|Root|Tag|Template)$">
    Order allow,deny
    </FilesMatch>

    # Don't show directory listings for URLs which map to a directory.
    Options -Indexes

    # Follow symbolic links in this directory.
    Options +FollowSymLinks

    # Customized error messages.
    ErrorDocument 404 /index.php

    # Set the default handler.
    DirectoryIndex index.php

    # Override PHP settings. More in sites/default/settings.php
    # but the following cannot be changed at runtime.

    # PHP 4, Apache 1.
    <IfModule mod_php4.c>
    php_value magic_quotes_gpc 0
    php_value register_globals 0
    php_value session.auto_start 0
    </IfModule>

    # PHP 4, Apache 2.
    <IfModule sapi_apache2.c>
    php_value magic_quotes_gpc 0
    php_value register_globals 0
    php_value session.auto_start 0
    </IfModule>

    # PHP 5, Apache 1 and 2.
    <IfModule mod_php5.c>
    php_value magic_quotes_gpc 0
    php_value register_globals 0
    php_value session.auto_start 0
    </IfModule>

    # Requires mod_expires to be enabled.
    <IfModule mod_expires.c>
    # Enable expirations.
    ExpiresActive On
    # Cache all files for 2 weeks after access (A).
    ExpiresDefault A1209600
    # Do not cache dynamically generated pages.
    ExpiresByType text/html A1
    </IfModule>

    # Various rewrite rules.
    <IfModule mod_rewrite.c>
    RewriteEngine on

    # If your site can be accessed both with and without the prefix www. you
    # can use one of the following settings to force user to use only one option:
    #
    # If you want the site to be accessed WITH the www. only, adapt and
    # uncomment the following:
    # RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
    # RewriteRule .* http://www.example.com/ [L,R=301]
    #
    # If you want the site to be accessed only WITHOUT the www. prefix, adapt
    # and uncomment the following:
    # RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
    # RewriteRule .* http://example.com/ [L,R=301]

    # Modify the RewriteBase if you are using Drupal in a subdirectory and
    # the rewrite rules are not working properly.
    #RewriteBase /drupal

    # Rewrite old-style URLs of the form 'node.php?id=x'.
    #RewriteCond %{REQUEST_FILENAME} !-f
    #RewriteCond %{REQUEST_FILENAME} !-d
    #RewriteCond %{QUERY_STRING} ^id=([^&]+)$
    #RewriteRule node.php index.php?q=node/view/%1 [L]

    # Rewrite old-style URLs of the form 'module.php?mod=x'.
    #RewriteCond %{REQUEST_FILENAME} !-f
    #RewriteCond %{REQUEST_FILENAME} !-d
    #RewriteCond %{QUERY_STRING} ^mod=([^&]+)$
    #RewriteRule module.php index.php?q=%1 [L]

    # Rewrite current-style URLs of the form 'index.php?q=x'.
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
    </IfModule>


    AddType application/vnd.ms-word.document.macroEnabled.12 .docm
    AddType application/vnd.openxmlformats-officedocument.wordprocessingml.document docx
    AddType application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx
    AddType application/vnd.ms-powerpoint.template.macroEnabled.12 potm
    AddType application/vnd.openxmlformats-officedocument.presentationml.template potx
    AddType application/vnd.ms-powerpoint.addin.macroEnabled.12 ppam
    AddType application/vnd.ms-powerpoint.slideshow.macroEnabled.12 ppsm
    AddType application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx
    AddType application/vnd.ms-powerpoint.presentation.macroEnabled.12 pptm
    AddType application/vnd.openxmlformats-officedocument.presentationml.presentation pptx
    AddType application/vnd.ms-excel.addin.macroEnabled.12 xlam
    AddType application/vnd.ms-excel.sheet.binary.macroEnabled.12 xlsb
    AddType application/vnd.ms-excel.sheet.macroEnabled.12 xlsm
    AddType application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx
    AddType application/vnd.ms-excel.template.macroEnabled.12 xltm
    AddType application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx




    ".manifest", "application/manifest"
    ".xaml", "application/xaml+xml",
    ".application", "application/x-ms-application",
    ".deploy", "application/octet-stream"
    ".xbap", "application/x-ms-xbap"

    ".docm","application/vnd.ms-word.document.macroEnabled.12"
    ".docx","application/vnd.openxmlformats-officedocument.wordprocessingml.document"
    ".dotm","application/vnd.ms-word.template.macroEnabled.12"
    ".dotx","application/vnd.openxmlformats-officedocument.wordprocessingml.template"
    ".potm","application/vnd.ms-powerpoint.template.macroEnabled.12"
    ".potx","application/vnd.openxmlformats-officedocument.presentationml.template"
    ".ppam","application/vnd.ms-powerpoint.addin.macroEnabled.12"
    ".ppsm","application/vnd.ms-powerpoint.slideshow.macroEnabled.12"
    ".ppsx","application/vnd.openxmlformats-officedocument.presentationml.slideshow"
    ".pptm","application/vnd.ms-powerpoint.presentation.macroEnabled.12"
    ".pptx","application/vnd.openxmlformats-officedocument.presentationml.presentation"
    ".xlam","application/vnd.ms-excel.addin.macroEnabled.12"
    ".xlsb","application/vnd.ms-excel.sheet.binary.macroEnabled.12"
    ".xlsm","application vnd.ms-excel.sheet.macroEnabled.12"
    ".xlsx","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
    ".xltm","application/vnd.ms-excel.template.macroEnabled.12"
    ".xltx","application/vnd.openxmlformats-officedocument.spreadsheetml.template"




    # $Id: .htaccess,v 1.81 2007/01/09 09:27:10 dries Exp $

  6. #6
    Join Date
    Jun 2008
    Location
    Orlando, FL
    Posts
    3
    haha, awesome dude. awesome.

    take out all the stuff in quotes at the bottom there starting with

    ".manifest", "application/manifest"

    and ending with

    ".xltx","application/vnd.openxmlformats-officedocument.spreadsheetml.template"

    All that stuff was from the op in some kinda crazy format for some other web server that I'm too stupid to understand, my post was what you needed for Apache. All that garbage you put in there Apache has no idea what to do with.

    Try that out and lemme know how it goes.

  7. #7
    Join Date
    Jan 2010
    Posts
    1
    This did it for me, thanks a lot mcupples, opened the folder my Excel file was in then went to file manager, created new file paste it the code you recommended, done.

    Thanks

  8. #8
    Join Date
    Feb 2010
    Posts
    1

    simplify please

    I've been having the same problem with .docx files attached to emails and being saved as un-openable zip files. I am absolutely not computer-savvy. I use IE8 and Windows 7. Please explain this fix in a way I could follow - or suggest a site that would have it. This would save a lot of grief. thanks very much

  9. #9
    Join Date
    Mar 2010
    Posts
    1

    for those who aren't tech savvy

    if you save the docx document as a zip file and then change the extension from .zip to .docx it magically turns it into a word document; to change the file extension, you have to go into control panel and folder options and uncheck the box that says hide extensions

  10. #10
    Join Date
    Jan 2012
    Posts
    1

    Thumbs up Thanks!

    Thanks Bradclif et al. That worked a charm!

  11. #11
    Join Date
    Nov 2002
    Posts
    2,632
    Quote Originally Posted by wgchapel View Post
    Thanks Bradclif et al. That worked a charm!
    You are thanking a person who posted two years ago.

  12. #12
    Join Date
    Jun 2010
    Posts
    1

    Mime types

    Hi there

    I have mentioned the mime type in my apache under /etc/mime.types
    still it did not work as expected

    Interestingly it works in some of the IE8 browsers but not all

    Does the order matters in /etc/mime.types ?

    And IE8 with windows 7 OS, the docx opens with type as XML ..

    Any suggestions

  13. #13
    Join Date
    Nov 2010
    Posts
    1

    Hi there

    I had this problem, my aplication was made on java and the web server was jetty, but i think that with this solution it doent mater about the web server, the only thing that you hava to do is add this lines on your web.xml :


    <mime-mapping>
    <extension>docx</extension>
    <mime-type>application/vnd.openxmlformats-officedocument.wordprocessingml.document</mime-type>
    </mime-mapping>

    <mime-mapping>
    <extension>xlsx</extension>
    <mime-type>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</mime-type>
    </mime-mapping>

    I hope this help us, because i was searching for this solution.

  14. #14
    Join Date
    Feb 2010
    Posts
    1

    Line 1 correction

    Line 1 in the code should be?
    AddType application/vnd.ms-word.document.macroEnabled.12 docm
    with no . in front of the file extension name
    This code also worked for me...Thank you very much!

    Quote Originally Posted by mcupples View Post
    So yeah, to make this work in apache, throw up a file called .htaccess in the web root of whatever site you want to change and throw this crap in it:

    Code:
    AddType application/vnd.ms-word.document.macroEnabled.12 .docm
    AddType application/vnd.openxmlformats-officedocument.wordprocessingml.document docx
    AddType application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx
    AddType application/vnd.ms-powerpoint.template.macroEnabled.12 potm
    AddType application/vnd.openxmlformats-officedocument.presentationml.template potx
    AddType application/vnd.ms-powerpoint.addin.macroEnabled.12 ppam
    AddType application/vnd.ms-powerpoint.slideshow.macroEnabled.12 ppsm
    AddType application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx
    AddType application/vnd.ms-powerpoint.presentation.macroEnabled.12 pptm
    AddType application/vnd.openxmlformats-officedocument.presentationml.presentation pptx
    AddType application/vnd.ms-excel.addin.macroEnabled.12 xlam
    AddType application/vnd.ms-excel.sheet.binary.macroEnabled.12 xlsb
    AddType application/vnd.ms-excel.sheet.macroEnabled.12 xlsm
    AddType application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx
    AddType application/vnd.ms-excel.template.macroEnabled.12 xltm
    AddType application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx
    and it'll work. thanks to the op! been looking for that for a while!

  15. #15
    Join Date
    May 2010
    Posts
    1

    Thanks for the help!

    Thanks for the tip, this was very helpful. By the way I placed these apache mime types directly in the mime.types file for Apache config and worked just as well (Removed the add statement word at the front).

Thread Information

Users Browsing this Thread

There are currently 6 users browsing this thread. (0 members and 6 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles