2015-05-13 4 views
0

Я пытался загрузить изображение в Laravel 5 (загрузка была создана через laravelcollective/forms и обработана с использованием библиотеки Intervention Image). Что я хочу сделать, когда пользователь загружает любую фотографию, я хочу установить расширение на основе его mimetype. Должна быть какая-то базовая проверка для защиты от ложных инъекций данных.Сгенерировать расширение изображения из mimetype

$file_profile_image->getClientMimeType(); 

Чтобы сделать это, я должен быть просто отображение как так ?

['image/jpeg' => 'jpg', 'image/gif'=> 'gif'] 

ответ

0

Это, как я хотел бы сделать это:

$source_file = $request->file('image')->getRealPath(); 
$info = get_image_details($source_file); 

get_image_details($path) функция может быть определена следующим образом:

function get_image_details($path) 
{ 
    $details = @getimagesize($path); 

    if (is_array($details) && count($details) > 2) { 

     $info = [ 
      'width' => $details[0], 
      'height' => $details[1], 
      'mime' => $details['mime'], 
      'size' => @filesize($path), 
      'path' => $path, 
     ]; 

     switch ($details['2']) { 
      case IMG_PNG: 
      case 3: 
       $info['type'] = 'png'; 
      break; 

      case IMG_JPG: 
      case 2: 
       $info['type'] = 'jpg'; 
      break; 

      case IMG_GIF: 
      case 1: 
       $info['type'] = 'gif'; 
      break; 

      default: 
       $info['type'] = $details[2]; 
      break; 
     } 

     return $info; 
    } 
    return false; 
} 
+0

См @Robert ответ выше (http://stackoverflow.com/a/30207954/1330710) – rolfk

1

Я хотел бы использовать пакет мер, чтобы проверить, если вы» re загрузить действительное изображение и получить mime оттуда.

Что-то вроде этого:

/** 
* Store a file 
* 
* @return Response 
*/ 
public function store(Filesystem $filesystem) 
{ 
    // check if file was posted 

    $uploadedFile = Request::file('file'); 

    // other checks here, ->isValid() && filesize 

    try { 
     $image = Image::make(\File::get($uploadedFile)); 
    } catch (\Intervention\Image\Exception\NotReadableException $e) { 
     \Log::error('Unsupported filetype'); 
     dd('Unsupported filetype'); 
     // return proper error here 
    } 

    // mime as returned by Intervention 
    $mime = $image->mime(); 

    // other stuff 
    // store @ fs 
} 
+0

спасибо за это .. я люблю легкую реализацию. В режиме чтения в интерактивные документы я обнаружил, что он сохранит изображение в указанном формате расширения (если не указано, то резервное копирование изображения по умолчанию). – rolfk

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

  • Нет связанных вопросов^_^