2011-01-14 18 views
0

Amazon S3でアップロードされたファイルのMIMEタイプを変更する方法を教えてください。私はhttp://docs.amazonwebservices.com/AWSSDKforPHP/latest/#m=AmazonS3/change_content_typeで試しましたが、動作しません。S3にアップロードされたファイルのMIMEタイプ

+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サービスは、コピー・イン・場所(すなわち、置き換え)運転中にACLまたはコンテンツタイプを維持する試みません。

AmazonS3 :: change_content_type()メソッドは単にcopy_object()メソッドのラッパーであることがわかりました。 look at the implementationの場合、PHP SDKがコアS3サービスでこの問題を回避するためにコピーインプレイス操作を実行する前に、現在のACLとコンテンツタイプを検索しようとします。

あなたのために働いていない場合は、AWS PHP forumにバグとして投稿しましたか? SDKの開発者は、そこに報告されるバグに対処するのにかなり反応しているようです。

関連する問題