サポート » 使い方全般 » iPhoneから画像をアップロードした時の拡張子名

  • 解決済 mucchan

    (@mucchan)


    iPhoneから画像をアップロードした時に拡張子が「jpeg」のなるわけですが、
    パソコンからアップロードする時は「jpg」でアップロードしてるので、
    「jpg」で統一したいのですが何か方法はありますでしょうか。

    よろしくお願いします。

11件の返信を表示中 - 1 - 11件目 (全11件中)
  • CG

    (@du-bist-der-lenz)

    jpeg でアップロード出来ないというのではないですね

    wp_handle_upload()とかでアップロード時にファイル名とURLを置換すれば良いと思います。
    関数リファレンス/wp handle upload

    こんにちは

    フィルターフックだと wp_handle_upload_prefilter フィルターフックあたりでしょうか。
    https://codex.wordpress.org/Plugin_API/Filter_Reference/wp_handle_upload_prefilter

    トピック投稿者 mucchan

    (@mucchan)

    いろいろご意見ありがとうございます。

    前にファイルアップロードでファイル名をリネームするフックを書いていたので、

    function rename_file($filename){
    	$pathinfo = pathinfo($filename);
    	if ($info['filename'] == 'sitemap'){
    		return $filename;
    	}
    	return date("YmdHis") . "." . $pathinfo['extension'];
    }
    add_filter('sanitize_file_name', 'rename_file', 10);

    これを、

    function rename_file($filename){
    	$pathinfo = pathinfo($filename);
    	if ($info['filename'] == 'sitemap'){
    		return $filename;
    	}
    	if ($pathinfo['extension'] == 'jpeg'){
    		return date("YmdHis") . ".jpg";
    	}
    	return date("YmdHis") . "." . $pathinfo['extension'];
    }
    add_filter('sanitize_file_name', 'rename_file', 10);

    というふうにしました。

    特に問題がないようなので良しとしたいのですが、コードなど問題ありましたらご指摘いただけると幸いです。

    3行目のif ($info['filename'] == 'sitemap'){ですが$infoが$pathinfoの間違いのようです。
    エラーも無くて問題無く動けば大丈夫ではないでしょうか。

    sanitize_file_name() はファイル名をフォーマットするためのヘルパー関数であり、アップロード以外にもプラグインやテーマ等で使用される可能性があるので注意する必要があります。
    問題がないようでしたら大丈夫かとは思いますが・・・。

    トピック投稿者 mucchan

    (@mucchan)

    いろいろご指摘ありがとうございます。

    プラグインやテーマ等で使用される可能性があるというのは気がかりな感じですね。

    こうした方がイイんじゃないかなというコードなどありましたら参考に教えていただけると助かります。

    よろしくお願いします。

    こんな感じではどうでしょうか。

    function upload_prefilter_jpeg_to_jpg( $file ){
    	$ext = substr( strrchr( $file['name'], '.' ), 1 );
    	if ( $ext == 'jpeg' ) {
    		$file['name'] = basename( $file['name'], 'jpeg' ) . 'jpg';
    	}
    	return $file;
    }
    add_filter( 'wp_handle_upload_prefilter', 'upload_prefilter_jpeg_to_jpg' );
    トピック投稿者 mucchan

    (@mucchan)

    ishitakaさんありがとうございます。

    このやり方でファイル名を日付(YmdHis)にリネイムさせることはできますか?

    wp_handle_upload_prefilter フィルターフックの後に sanitize_file_name フィルターフックもコールされるので、そのままで変更されませんか?
    なお、wp_handle_upload_prefilter フックで変更する場合は、下記のような感じでしょうか。

    function upload_prefilter_jpeg_to_jpg( $file ){
    	$ext = substr( strrchr( $file['name'], '.'), 1 );
    	if ( $ext == 'jpeg' ) {
    		$ext = 'jpg';
    	}
    	$file['name'] = date("YmdHis") . '.' . $ext;
    	return $file;
    }
    add_filter('wp_handle_upload_prefilter', 'upload_prefilter_jpeg_to_jpg' );
    トピック投稿者 mucchan

    (@mucchan)

    ishitakaさんありがとうありがとうございました。

    問題なく出来るようです。

    こちらの方を採用させていただくということで解決済みにさせていただきます。

    ご意見くださった皆様ありがとうございました。

11件の返信を表示中 - 1 - 11件目 (全11件中)
  • トピック「iPhoneから画像をアップロードした時の拡張子名」には新たに返信することはできません。