Проблем с ъплоуд на .gif-ове

vinsbg

Registered
Със снимки няма проблем, но .gif-ове не иска да качва.
Грешката, която изкарва е на втория IF блок
Код:
if (in_array($fileType, $permitted) && $fileSize > 0
        && $fileSize <= MAX_FILE_SIZE)
Ето го и кода
Код:
define('MAX_FILE_SIZE', 20000000000);
$permitted = array('image/jpeg', 'image/jpeg', 'image/png', 'image/gif');
if (isset($_POST['upload'])) {

$caption = $_POST['caption'];
$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];
$category = $_POST['gif_cat'];

$ext = substr(strrchr($fileName, "."), 1);
// generate the random file name
$randName = md5(rand() * time());

// gif name with extension
$myFile = $randName . '.' . $ext;
// save gif path
$path = "../upload/gifs/" . $myFile;

if (in_array($fileType, $permitted) && $fileSize > 0
    && $fileSize <= MAX_FILE_SIZE) {

    $result = move_uploaded_file($tmpName, $path);

    if (!$result) {
        echo "Error uploading gif file";
        exit;
    } else {
        $db = new mysqli("localhost", "user", "pass", "table");

        if (mysqli_connect_errno()) {
            printf("Connect failed: %s<br/>", mysqli_connect_error());
        }
        mysqli_set_charset($db, "UTF8");

        $query = "INSERT INTO gifs (caption, name, size, type, file_path, gif_cat) VALUES (?,?,?,?,?,?)";
        $conn = $db->prepare($query);
        if ($conn == TRUE) {
            $conn->bind_param("ssisss",$caption, $myFile, $fileSize, $fileType, $path, $category);
            if (!$conn->execute()) {
                echo 'error insert';
            } else {
                echo "Gif {$_FILES['userfile']['name']} was successfully uploaded<br />
                <a href='index.php'>Add another gif</a><br />";
                exit;
            }
        } else {
            die("Error 1: ERROR preparing Statement");
        }
    }
} else {
    echo 'Error 2: ERROR upload file';
}
} else {
echo 'Error 3';
}
Когато проверя var_dump($_FILES) изкарва това:
Код:
array (size=1)
  'userfile' => 
    array (size=5)
      'name' => string 'azbRWYK460sa.gif' (length=16)
      'type' => string '' (length=0)
      'tmp_name' => string '' (length=0)
      'error' => int 1
      'size' => int 0
От тук предполагам, че проблема може да е в
$fileSize = $_FILES['userfile']['size']; , но не виждам какъв точно.
Някакви идеи?
 
абе понеже не видам проблем на пръв поглед, имаш ли добавен енкодинг на формата, с който да позволиш качването на файловете ? (enctype='multipart/form-data') :idea:
 
joTunkiq каза:
абе понеже не видам проблем на пръв поглед, имаш ли добавен енкодинг на формата, с който да позволиш качването на файловете ? (enctype='multipart/form-data') :idea:
Да, ето я формата
Код:
<form action="upload_gif.php" method="post" enctype="multipart/form-data">
        Изберете категория
    <select name="gif_cat">
                <option value="1">1</option>
                <option value="2">2</option>
            </select><br/><br />
                <input type="text" name="caption" /><br /><br />
                <input type="file" name="userfile" /><br /><br />
                <input type="submit" name="upload" id="upload" value="Изпрати" />
                </form>

Мисля, че $fileType и $fileSize се дънят, но нямам идея защо.
 
Погледни полето error на масива $_FILES
Грешка 1 гласи, че си надминал размера определен с upload_max_filesize в php.ini.
с phpinfo() може да видиш текущите настройки.
Оправи си upload_max_filesize и ще тръгне.
upload_max_filesize може освен, чрез php.ini да се задава и от .htaccess файла ако е разрешено това разбира се.
Поздрави.
 
И двете са ми на 20М
Код:
; Maximum allowed size for uploaded files.
upload_max_filesize = 20M

; Must be greater than or equal to upload_max_filesize
post_max_size = 20M

Странно е и нямам идея...
 
imagination каза:
Здравей,
а phpinfo() какво показва ? Провери да нямаш повче от един php.ini
Поздрави.
това излиза на phpinfo()
max_file_uploads 20 20
post_max_size 8M 8M
upload_max_filesize 2M 2M
а това е във файла
upload_max_filesize = 20M
post_max_size = 20M
max_file_uploads - НЯМА ГО ВЪВ ФАЙЛА?!
Това е странно.. в php.ini са ми на 20М и трите.. че къде да е този допълнителен php.ini и как така използва него?
Явно наистина не ползва този файл, а друг, но къде е?

edit:
Един файл имам в папка php и друг в папката на Apache... като промених стойностите във файла, който е в папката на Apache и всичко се оправи.
Благодаря
 
Здравей,
в phpinfo() ти дава пътя до използваният php.ini файл.
Мръсен проблем, един път цял ден загубих така.
Поздрзави.
 

Back
Горе