2011-01-14 6 views
0

Как изменить тип mime для загружаемых файлов на Amazon S3. Я пробовал с http://docs.amazonwebservices.com/AWSSDKforPHP/latest/#m=AmazonS3/change_content_type, но он не работает.MIME Тип для загружаемых файлов на S3

+0

Какая ошибка/сообщение вы получаете? –

+0

isOK отображает true, но не работает в реальном режиме. – Dev

+0

, пожалуйста, напишите свой код – mfonda

ответ

7

Вы можете попробовать это:

// Instantiate the class 
$s3 = new AmazonS3(); 

$bucket_name = 'my-bucket'; 
$file_name = 'test1.txt'; 
$mime_type = getMimeType($file_name); 

$response = $s3->change_content_type($bucket_name, $file_name, $mime_type); 

// Success? 
var_dump($response->isOK()); 

function getMimeType($file) { 
    // MIME types array 
    $mimeTypes = array(
     "323"  => "text/h323", 
     "acx"  => "application/internet-property-stream", 
     "ai"  => "application/postscript", 
     "aif"  => "audio/x-aiff", 
     "aifc"  => "audio/x-aiff", 
     "aiff"  => "audio/x-aiff", 
     "asf"  => "video/x-ms-asf", 
     "asr"  => "video/x-ms-asf", 
     "asx"  => "video/x-ms-asf", 
     "au"  => "audio/basic", 
     "avi"  => "video/x-msvideo", 
     "axs"  => "application/olescript", 
     "bas"  => "text/plain", 
     "bcpio"  => "application/x-bcpio", 
     "bin"  => "application/octet-stream", 
     "bmp"  => "image/bmp", 
     "c"   => "text/plain", 
     "cat"  => "application/vnd.ms-pkiseccat", 
     "cdf"  => "application/x-cdf", 
     "cer"  => "application/x-x509-ca-cert", 
     "class"  => "application/octet-stream", 
     "clp"  => "application/x-msclip", 
     "cmx"  => "image/x-cmx", 
     "cod"  => "image/cis-cod", 
     "cpio"  => "application/x-cpio", 
     "crd"  => "application/x-mscardfile", 
     "crl"  => "application/pkix-crl", 
     "crt"  => "application/x-x509-ca-cert", 
     "csh"  => "application/x-csh", 
     "css"  => "text/css", 
     "dcr"  => "application/x-director", 
     "der"  => "application/x-x509-ca-cert", 
     "dir"  => "application/x-director", 
     "dll"  => "application/x-msdownload", 
     "dms"  => "application/octet-stream", 
     "doc"  => "application/msword", 
     "dot"  => "application/msword", 
     "dvi"  => "application/x-dvi", 
     "dxr"  => "application/x-director", 
     "eps"  => "application/postscript", 
     "etx"  => "text/x-setext", 
     "evy"  => "application/envoy", 
     "exe"  => "application/octet-stream", 
     "fif"  => "application/fractals", 
     "flr"  => "x-world/x-vrml", 
     "gif"  => "image/gif", 
     "gtar"  => "application/x-gtar", 
     "gz"  => "application/x-gzip", 
     "h"   => "text/plain", 
     "hdf"  => "application/x-hdf", 
     "hlp"  => "application/winhlp", 
     "hqx"  => "application/mac-binhex40", 
     "hta"  => "application/hta", 
     "htc"  => "text/x-component", 
     "htm"  => "text/html", 
     "html"  => "text/html", 
     "htt"  => "text/webviewhtml", 
     "ico"  => "image/x-icon", 
     "ief"  => "image/ief", 
     "iii"  => "application/x-iphone", 
     "ins"  => "application/x-internet-signup", 
     "isp"  => "application/x-internet-signup", 
     "jfif"  => "image/pipeg", 
     "jpe"  => "image/jpeg", 
     "jpeg"  => "image/jpeg", 
     "jpg"  => "image/jpeg", 
     "js"  => "application/x-javascript", 
     "latex"  => "application/x-latex", 
     "lha"  => "application/octet-stream", 
     "lsf"  => "video/x-la-asf", 
     "lsx"  => "video/x-la-asf", 
     "lzh"  => "application/octet-stream", 
     "m13"  => "application/x-msmediaview", 
     "m14"  => "application/x-msmediaview", 
     "m3u"  => "audio/x-mpegurl", 
     "man"  => "application/x-troff-man", 
     "mdb"  => "application/x-msaccess", 
     "me"  => "application/x-troff-me", 
     "mht"  => "message/rfc822", 
     "mhtml"  => "message/rfc822", 
     "mid"  => "audio/mid", 
     "mny"  => "application/x-msmoney", 
     "mov"  => "video/quicktime", 
     "movie"  => "video/x-sgi-movie", 
     "mp2"  => "video/mpeg", 
     "mp3"  => "audio/mpeg", 
     "mpa"  => "video/mpeg", 
     "mpe"  => "video/mpeg", 
     "mpeg"  => "video/mpeg", 
     "mpg"  => "video/mpeg", 
     "mpp"  => "application/vnd.ms-project", 
     "mpv2"  => "video/mpeg", 
     "ms"  => "application/x-troff-ms", 
     "mvb"  => "application/x-msmediaview", 
     "nws"  => "message/rfc822", 
     "oda"  => "application/oda", 
     "p10"  => "application/pkcs10", 
     "p12"  => "application/x-pkcs12", 
     "p7b"  => "application/x-pkcs7-certificates", 
     "p7c"  => "application/x-pkcs7-mime", 
     "p7m"  => "application/x-pkcs7-mime", 
     "p7r"  => "application/x-pkcs7-certreqresp", 
     "p7s"  => "application/x-pkcs7-signature", 
     "pbm"  => "image/x-portable-bitmap", 
     "pdf"  => "application/pdf", 
     "pfx"  => "application/x-pkcs12", 
     "pgm"  => "image/x-portable-graymap", 
     "pko"  => "application/ynd.ms-pkipko", 
     "pma"  => "application/x-perfmon", 
     "pmc"  => "application/x-perfmon", 
     "pml"  => "application/x-perfmon", 
     "pmr"  => "application/x-perfmon", 
     "pmw"  => "application/x-perfmon", 
     "pnm"  => "image/x-portable-anymap", 
     "pot"  => "application/vnd.ms-powerpoint", 
     "ppm"  => "image/x-portable-pixmap", 
     "pps"  => "application/vnd.ms-powerpoint", 
     "ppt"  => "application/vnd.ms-powerpoint", 
     "prf"  => "application/pics-rules", 
     "ps"  => "application/postscript", 
     "pub"  => "application/x-mspublisher", 
     "qt"  => "video/quicktime", 
     "ra"  => "audio/x-pn-realaudio", 
     "ram"  => "audio/x-pn-realaudio", 
     "ras"  => "image/x-cmu-raster", 
     "rgb"  => "image/x-rgb", 
     "rmi"  => "audio/mid", 
     "roff"  => "application/x-troff", 
     "rtf"  => "application/rtf", 
     "rtx"  => "text/richtext", 
     "scd"  => "application/x-msschedule", 
     "sct"  => "text/scriptlet", 
     "setpay" => "application/set-payment-initiation", 
     "setreg" => "application/set-registration-initiation", 
     "sh"  => "application/x-sh", 
     "shar"  => "application/x-shar", 
     "sit"  => "application/x-stuffit", 
     "snd"  => "audio/basic", 
     "spc"  => "application/x-pkcs7-certificates", 
     "spl"  => "application/futuresplash", 
     "src"  => "application/x-wais-source", 
     "sst"  => "application/vnd.ms-pkicertstore", 
     "stl"  => "application/vnd.ms-pkistl", 
     "stm"  => "text/html", 
     "svg"  => "image/svg+xml", 
     "sv4cpio" => "application/x-sv4cpio", 
     "sv4crc" => "application/x-sv4crc", 
     "t"   => "application/x-troff", 
     "tar"  => "application/x-tar", 
     "tcl"  => "application/x-tcl", 
     "tex"  => "application/x-tex", 
     "texi"  => "application/x-texinfo", 
     "texinfo" => "application/x-texinfo", 
     "tgz"  => "application/x-compressed", 
     "tif"  => "image/tiff", 
     "tiff"  => "image/tiff", 
     "tr"  => "application/x-troff", 
     "trm"  => "application/x-msterminal", 
     "tsv"  => "text/tab-separated-values", 
     "txt"  => "text/plain", 
     "uls"  => "text/iuls", 
     "ustar"  => "application/x-ustar", 
     "vcf"  => "text/x-vcard", 
     "vrml"  => "x-world/x-vrml", 
     "wav"  => "audio/x-wav", 
     "wcm"  => "application/vnd.ms-works", 
     "wdb"  => "application/vnd.ms-works", 
     "wks"  => "application/vnd.ms-works", 
     "wmf"  => "application/x-msmetafile", 
     "wps"  => "application/vnd.ms-works", 
     "wri"  => "application/x-mswrite", 
     "wrl"  => "x-world/x-vrml", 
     "wrz"  => "x-world/x-vrml", 
     "xaf"  => "x-world/x-vrml", 
     "xbm"  => "image/x-xbitmap", 
     "xla"  => "application/vnd.ms-excel", 
     "xlc"  => "application/vnd.ms-excel", 
     "xlm"  => "application/vnd.ms-excel", 
     "xls"  => "application/vnd.ms-excel", 
     "xlsx"  => "vnd.ms-excel", 
     "xlt"  => "application/vnd.ms-excel", 
     "xlw"  => "application/vnd.ms-excel", 
     "xof"  => "x-world/x-vrml", 
     "xpm"  => "image/x-xpixmap", 
     "xwd"  => "image/x-xwindowdump", 
     "z"   => "application/x-compress", 
     "zip"  => "application/zip" 
    ); 

    $extension = end(explode('.', $file)); 
    return $mimeTypes[$extension]; // return the array value 
} 
+0

Спасибо, как полезный, но «change_content_type» не работает для меня. – Dev

1

Ядро службы Amazon S3 не делает никаких попыток сохранить списки контроля доступа или тип содержимого во время копирования на месте (то есть, заменить) операцию.

Я знаю, что метод AmazonS3 :: change_content_type() является просто оболочкой вокруг метода copy_object(). Если вы look at the implementation, вы увидите, что PHP SDK пытается найти текущий ACL и тип содержимого перед выполнением операции копирования на месте, чтобы обойти эту проблему в основной службе S3.

Если это не работает для вас, разместили ли вы это как ошибку для AWS PHP forum? Похоже, что разработчик SDK очень отзывчив на устранение ошибок, которые сообщаются там.

Смежные вопросы