www.webdeveloper.com
Recent Articles
  • Finding Slow Running Queries in ASE 15
  • A More Advanced Pie Chart for Analysis Services Data
  • Adobe AIR Programming Unleashed: Working with Windows
  • Performance Testing SQL Server 2008's Change Data Capture Functionality
  • The ABC's of PHP: Introduction to PHP
  • How to Migrate from BasicFiles to SecureFiles Storage
  • Why the Twitter Haters Are Wrong
  • User Personalization with PHP: Beginning the Application
  • Whats in an Oracle Schema?
  • Lighting Enhancement in Photoshop
  •  

    Go Back   WebDeveloper.com > Server-Side Development > Other

    Other Discussion and technical support for any other scripting methods.

    Reply
     
    Thread Tools Search this Thread Rate Thread Display Modes
      #1  
    Old 10-05-2007, 12:33 PM
    discorax's Avatar
    discorax discorax is offline
    Ryan C Davidson - web dev
     
    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"
    __________________
    discorax - www.ryancdavidson.com
    PBJS - www.pbjs.com
    Reply With Quote
      #2  
    Old 06-13-2008, 10:46 AM
    mcupples mcupples is offline
    Registered User
     
    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!
    Reply With Quote
      #3  
    Old 06-17-2008, 03:53 PM
    ontrac ontrac is offline
    Registered User
     
    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?
    Reply With Quote
      #4  
    Old 06-17-2008, 04:06 PM
    mcupples mcupples is offline
    Registered User
     
    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?
    Reply With Quote
      #5  
    Old 06-18-2008, 06:46 AM
    ontrac ontrac is offline
    Registered User
     
    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 $
    Reply With Quote
      #6  
    Old 06-18-2008, 09:44 AM
    mcupples mcupples is offline
    Registered User
     
    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.
    Reply With Quote
      #7  
    Old 06-18-2008, 10:06 AM
    ontrac ontrac is offline
    Registered User
     
    Join Date: Jun 2008
    Posts: 3
    not yet but...update_mime.vbs

    i removed the extra stuff and restarted the server but that did not do it.

    I added this script (not mine) and placed it: Apache Group\Apache2\conf\update_mime.vbs

    and that seemed to have dome something however instead of downloading the .xlsm file as 07 it opens as 03.

    Any other thoughts?


    'This script adds the necessary Office 2007 MIME types to an IIS Server.
    'To use this script, just double-click or execute it from a command line.
    'Running this script multiple times results in multiple entries in the IIS MimeMap.

    Dim MimeMapObj, MimeMapArray, MimeTypesToAddArray, WshShell, oExec
    Const ADS_PROPERTY_UPDATE = 2

    'Set the MIME types to be added
    ' MimeTypesToAddArray = Array(".manifest", "application/manifest", _
    ' ".xaml", "application/xaml+xml", ".application", "application/x-ms-application", ".deploy", "application/octet-stream", _
    ' ".xbap", "application/x-ms-xbap")
    MimeTypesToAddArray = Array( _
    ".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" _
    )

    'Get the mimemap object
    Set MimeMapObj = GetObject("IIS://LocalHost/MimeMap")

    'Call AddMimeType for every pair of extension/MIME type
    For counter = 0 to UBound(MimeTypesToAddArray) Step 2
    AddMimeType MimeTypesToAddArray(counter), MimeTypesToAddArray(counter+1)
    Next

    'Create a Shell object
    Set WshShell = CreateObject("WScript.Shell")

    'Stop and Start the IIS Service
    Set oExec = WshShell.Exec("net stop w3svc")
    Do While oExec.Status = 0
    WScript.Sleep 100
    Loop

    Set oExec = WshShell.Exec("net start w3svc")
    Do While oExec.Status = 0
    WScript.Sleep 100
    Loop

    Set oExec = Nothing

    'Report status to user
    WScript.Echo "SharePoint Mime Types have been added."

    'AddMimeType Sub
    Sub AddMimeType (Ext, MType)

    'Get the mappings from the MimeMap property.
    MimeMapArray = MimeMapObj.GetEx("MimeMap")

    ' Add a new mapping.
    i = UBound(MimeMapArray) + 1
    Redim Preserve MimeMapArray(i)
    Set MimeMapArray(i) = CreateObject("MimeMap")
    MimeMapArray(i).Extension = Ext
    MimeMapArray(i).MimeType = MType
    MimeMapObj.PutEx ADS_PROPERTY_UPDATE, "MimeMap", MimeMapArray
    MimeMapObj.SetInfo
    End Sub
    Reply With Quote
      #8  
    Old 08-08-2008, 05:25 PM
    redrings redrings is offline
    Registered User
     
    Join Date: Aug 2008
    Posts: 1
    Worked like a charm

    Hey, thanks for this. Worked perfectly - office 2007 files are now downloading correctly.
    Reply With Quote
      #9  
    Old 10-26-2008, 12:45 AM
    dillibabur dillibabur is offline
    Registered User
     
    Join Date: Oct 2008
    Posts: 1
    Hi ,

    I am facing the same issue (office 2007 files are opened as zip files while downloaded). I am using Pramati 4.1 server. I do not see .htaccess in the server. Can you please help me how to fix this issue in Pramati.

    Thanks
    Babu
    Reply With Quote
      #10  
    Old 11-24-2008, 10:02 AM
    paul_796 paul_796 is offline
    Registered User
     
    Join Date: Nov 2008
    Posts: 1
    mozilla doesn't have the same problem

    I have half users using Mozilla with no problem but those using IE have the issue, I haven't seen any patch from Microsoft as a patch yet, but isn't this really an IE issue?
    Reply With Quote
      #11  
    Old 05-13-2009, 11:54 PM
    DustDevil1980 DustDevil1980 is offline
    Registered User
     
    Join Date: May 2009
    Posts: 1
    ubuntu/apache2

    For apache2:

    /etc/mime.types

    application/vnd.ms-word.document.macroEnabled.12 .docm
    application/vnd.openxmlformats-officedocument.wordprocessingml.document docx
    application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx
    application/vnd.ms-powerpoint.template.macroEnabled.12 potm
    application/vnd.openxmlformats-officedocument.presentationml.template potx
    application/vnd.ms-powerpoint.addin.macroEnabled.12 ppam
    application/vnd.ms-powerpoint.slideshow.macroEnabled.12 ppsm
    application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx
    application/vnd.ms-powerpoint.presentation.macroEnabled.12 pptm
    application/vnd.openxmlformats-officedocument.presentationml.presentation pptx
    application/vnd.ms-excel.addin.macroEnabled.12 xlam
    application/vnd.ms-excel.sheet.binary.macroEnabled.12 xlsb
    application/vnd.ms-excel.sheet.macroEnabled.12 xlsm
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx
    application/vnd.ms-excel.template.macroEnabled.12 xltm
    application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx
    Reply With Quote
      #12  
    Old 06-21-2009, 05:27 AM
    Chenille Chenille is offline
    Registered User
     
    Join Date: Jun 2009
    Posts: 1
    Thanks for this discussion. Now I am able to solved the problem. Great job.


    Simulation pret
    Reply With Quote
      #13  
    Old 08-27-2009, 06:27 AM
    sam111986 sam111986 is offline
    Registered User
     
    Join Date: Aug 2009
    Posts: 1
    Hi, I have IIS 5.1 installed on my computer with windows xp pro (sp2). I use Coldfusion MX.
    I have added the mime types to my IIS.
    I've also added these mime types to the metabase.bin.
    However, when i access my website (with IE7 )on localhost the problem still remains.
    The office 2007 files are stll being downloaded as .zip files.
    Any sugestions ???
    Reply With Quote
    Reply

    Bookmarks


    Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
     
    Thread Tools Search this Thread
    Search this Thread:

    Advanced Search
    Display Modes Rate This Thread
    Rate This Thread:

    Posting Rules
    You may not post new threads
    You may not post replies
    You may not post attachments
    You may not edit your posts

    BB code is On
    Smilies are On
    [IMG] code is Off
    HTML code is Off
    Forum Jump


    All times are GMT -5. The time now is 12:00 AM.



    Acceptable Use Policy

    internet.comMediabistrojusttechjobs.comGraphics.com

    WebMediaBrands Corporate Info


    Advertise | Newsletters | Feedback | Submit News

    Legal Notices | Licensing | Permissions | Privacy Policy

    Powered by vBulletin® Version 3.7.3
    Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.