WordPress.org

Make WordPress Core

Ticket #18730: 18730.patch

File 18730.patch, 1.4 KB (added by kurtpayne, 8 years ago)

Determine file extension based on content type header

  • wp-admin/includes/file.php

     
    509509                unlink( $tmpfname );
    510510                return $response;
    511511        }
     512       
     513        // If no extension is given, add one based on the content-type header
     514        $ext = pathinfo( $tmpfname, PATHINFO_EXTENSION );
     515        if ( empty( $ext ) && !empty( $response['headers']['content-type'] ) ) {
     516                $mimes = get_allowed_mime_types();
     517                foreach ( (array) $mimes as $ext => $mime ) {
     518                        if ( preg_match( '!^(' . $mime . ')$!i', $response['headers']['content-type']) ) {
     519                                $ext = array_shift( explode( '|', $ext) );
     520                                rename($tmpfname, "$tmpfname.$ext");
     521                                $tmpfname .= ".$ext";
     522                                break;
     523                        }
     524                }
     525        }
    512526
    513527        if ( 200 != wp_remote_retrieve_response_code( $response ) ){
    514528                unlink( $tmpfname );
  • wp-admin/includes/media.php

     
    587587
    588588                // Set variables for storage
    589589                // fix file filename for query strings
    590                 preg_match('/[^\?]+\.(jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG)/', $file, $matches);
     590                preg_match('/[^\?]+\.(jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG)/', $tmp, $matches);
    591591                $file_array['name'] = basename($matches[0]);
    592592                $file_array['tmp_name'] = $tmp;
    593593