move list of mimetypes by extention to a seperate file.

This commit is contained in:
Robin Appelman 2011-07-17 15:22:04 +02:00
parent f09f2d3290
commit 6935f036a5
2 changed files with 88 additions and 63 deletions

View File

@ -65,6 +65,7 @@ OC_FILESYSTEM::registerStorageType('local','OC_FILESTORAGE_LOCAL',array('datadir
*/
class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{
private $datadir;
private static $mimetypes=null;
public function __construct($arguments){
$this->datadir=$arguments['datadir'];
if(substr($this->datadir,-1)!=='/'){
@ -209,71 +210,14 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{
$mime_type=substr($reply,0,strrpos($reply,' '));
}
if (empty($mime_type)) {
// Fallback solution: try to guess the type by the file extension
// TODO: add more ...
switch (strtolower(strrchr(basename($fspath), "."))) {
case '.css':
$mime_type = 'text/css';
break;
case '.flac':
$mime_type = 'audio/flac';
break;
case '.gif':
$mime_type = 'image/gif';
break;
case '.gzip':
case '.gz':
$mime_type = 'application/x-gzip';
break;
case '.htm':
case '.html':
$mime_type = 'text/html';
break;
case '.jpeg':
case '.jpg':
$mime_type = 'image/jpeg';
break;
case '.js':
$mime_type = 'application/x-javascript';
break;
case '.oga':
case '.ogg':
$mime_type = 'audio/ogg';
break;
case '.ogv':
$mime_type = 'video/ogg';
break;
case '.pdf':
$mime_type = 'application/pdf';
break;
case '.png':
$mime_type = 'image/png';
break;
case '.svg':
$mime_type = 'image/svg+xml';
break;
case '.tar':
$mime_type = 'application/x-tar';
break;
case '.tgz':
$mime_type = 'application/x-compressed';
break;
case '.tif':
case '.tiff':
$mime_type = 'image/tiff';
break;
case '.txt':
$mime_type = 'text/plain';
break;
case '.zip':
$mime_type = 'application/zip';
break;
default:
$mime_type = 'application/octet-stream';
break;
// Fallback solution: (try to guess the type by the file extension
if(!self::$mimetypes){
self::$mimetypes=include('mimetypes.list.php');
}
$extention=strtolower(strrchr(basename($fspath), "."));
$extention=substr($extention,1);//remove leading .
$mime_type=(isset(self::$mimetypes[$extention]))?self::$mimetypes[$extention]:'application/octet-stream';
}
return $mime_type;
}
}

81
lib/mimetypes.list.php Normal file
View File

@ -0,0 +1,81 @@
<?php
/**
* ownCloud
*
* @author Robin Appelman
* @copyright 2011 Robin Appelman icewind1991@gmail.com
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
* License as published by the Free Software Foundation; either
* version 3 of the License, or any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
*
* You should have received a copy of the GNU Affero General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
*/
/**
* list of mimetypes by extention
*/
return array(
'css'=>'text/css',
'flac'=>'audio/flac',
'gif'=>'image/gif',
'gzip'=>'application/x-gzip',
'gz'=>'application/x-gzip',
'html'=>'text/html',
'htm'=>'text/html',
'jpeg'=>'image/jpeg',
'jpg'=>'image/jpeg',
'js'=>'application/javascript',
'oga'=>'audio/ogg',
'ogg'=>'audio/ogg',
'ogv'=>'video/ogg',
'pdf'=>'application/pdf',
'png'=>'image/png',
'svg'=>'image/svg+xml',
'tar'=>'application/x-tar',
'tgz'=>'application/x-compressed',
'tar.gz'=>'application/x-compressed',
'tif'=>'image/tiff',
'tiff'=>'image/tiff',
'txt'=>'text/plain',
'zip'=>'application/zip',
'wav'=>'audio/wav',
'odt'=>'application/vnd.oasis.opendocument.text',
'ods'=>'application/vnd.oasis.opendocument.spreadsheet',
'odg'=>'application/vnd.oasis.opendocument.graphics',
'odp'=>'application/vnd.oasis.opendocument.presentation',
'kra'=>'application/x-krita',
'mp3'=>'audio/mpeg',
'doc'=>'application/msword',
'docx'=>'application/msword',
'xls'=>'application/msexcel',
'xlsx'=>'application/msexcel',
'php'=>'application/x-php',
'exe'=>'application/x-ms-dos-executable',
'pl'=>'application/x-pearl',
'py'=>'application/x-python',
'blend'=>'application/x-blender',
'xcf'=>'application/x-gimp',
'psd'=>'application/x-photoshop',
'xml'=>'application/xml',
'avi'=>'video/x-msvideo',
'dv'=>'video/dv',
'm2t'=>'video/mp2t',
'mp4'=>'video/mp4',
'm4v'=>'video/mp4',
'mpg'=>'video/mpeg',
'mpeg'=>'video/mpeg',
'mov'=>'video/quicktime',
'webm'=>'video/webm',
'wmv'=>'video/x-ms-asf'
);
?>