Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sprawdzanie rozszerzenia ?
Forum PHP.pl > Forum > PHP
seba22
Witam,

W jaki sposób sprawdzić rozszerzenie świeżo dodanego pliku ( jeszcze nie przeniesionego funkcją move )

Chciałem tak:

  1. <?php
  2. $ext_poziom2L = pathinfo($_FILES["Filedata"]["tmp_name"]);
  3. ?>

i potem
  1. <?php
  2. echo -> $ext_poziom2L['extension'].
  3. ?>


I zwraca mi puste miejsce, jest to logiczne bo tmp_name, nie posiada przecież fizycznie rozszerzenia.

Potrzebuję, to aby wywołać funkcję
  1. <?php
  2. //Sprawdzam rozszeżenie
  3.  
  4.    
  5.    $system=explode('.',$name);
  6.    $system[2]=strtolower($system[2]);
  7.    if (preg_match('/jpg|jpeg/',$system[2])){
  8.        $img=imagecreatefromjpeg($_FILES["Filedata"]["tmp_name"]);
  9.    }
  10.    if (preg_match('/png/',$system[2])){
  11.        $img=imagecreatefrompng($_FILES["Filedata"]["tmp_name"]);
  12.    }
  13.    if (preg_match('/gif/',$system[2])){
  14.        $img=imagecreatefromgif($_FILES["Filedata"]["tmp_name"]);
  15.    }
  16. //Sprawdzam rozszeżenie
  17. ?>


I ta opcja nie działa, ponieważ nie ma rozszerzenia winksmiley.jpg
Ma ktoś jakiś zmyślny pomysł ?

A może dało by radę, ( nie programuję w php natywnie, więc podam pseudokod delphi )

  1. <?php
  2. try ( $img=załadować jako jpg)
  3. except
  4. try ( $img= zaladowac jako png)
  5. except
  6. try ($img zaladowac jako gif)
  7. except
  8. FAILED
  9. ?>
sowiq
Zobacz co zawiera $_FILES['Filedata']['type'] -> http://pl.php.net/manual/pl/features.file-...post-method.php

I jeszcze jedno. Plik ma rozszerzenie.
seba22
Array --> application/octet-stream

Takie coś mi wypluło.

// Poprawiam rozszerzenie ( nie wiem jak to się stało, w treści 3x napisałem poprawnie... )


// Przepraszam, zapomniałem o tym...
  1. <?php
  2. $_FILES["Filedata"]['name']
  3. ?>
sowiq
Cytat(seba22 @ 20.04.2009, 23:50:08 ) *
Array --> application/octet-stream
Jeśli wypluło Ci tablicę, to znaczy, że uploadujesz więcej niż jeden plik.

Porównaj typy MIME plików z tym: http://www.w3schools.com/media/media_mimeref.asp żeby wiedzieć z jakim rodzajem obrazka (albo innego pliku) masz do czynienia.
seba22
Już rozwiązane.

<?php
$_FILES["Filedata"]['name']
?>

I zwraca mi nazwę, z komputera lokalnego.

Bez obaw, nie zaufam jej, jeżeli nie utworzy mi z niej obrazka, to uznam że jest on niepoprawny.
guitarnet.pl
getImageFormat zwraca typ pliku graficznego

  1. <?php
  2. $image = new Imagick($_FILES['image_file']['tmp_name']);
  3.  
  4. $allowedType     = array('jpg','jpeg','gif','png','bmp');
  5.  
  6. if( !in_array( strtolower ($image->getImageFormat() ), $allowedType) )
  7. {
  8. return 'Invalid file type. Please try again.';
  9. }
  10. ?>
erix
A jak nie ma ImageMagick na serwerze w postaci PECL-a, to wtedy kaszana... GD do tego celu wystarczy - getimagesize" title="Zobacz w manualu PHP" target="_manual, choć przy BMP trzeba nieco pokombinować.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.