Что не так с этим php zip / загрузчиком изображений? - PullRequest
2 голосов
/ 21 марта 2012

Я делаю загрузчик изображений, и у меня возникла пара проблем.

Код очень прост: он получает файл (zip-файл) для формы и пару информационных текстов, затем генерирует URL-адрес, если он не существует ранее, а затем извлекает файл там.

Во-первых, переменные формы ($_post["serie"] и $_POST["capitulo"] устаревают, если размер файла велик и для загрузки требуется некоторое время.

Во-вторых, происходит сбой при загрузке не jpg-материалов> <и не знаю почему. </p>

Спасибо за ваши усилия заранее.

<?php 
require_once('pclzip.lib.php');

function preextract($p_event, &$p_header) {
    $info = pathinfo($p_header['filename']);
    if ($info['extension'] == 'gif' || $info['extension'] == 'jpg' || $info['extension'] == 'png' || $info['extension'] == 'jpeg') {
        return 1;
    } else {
        return 0;
    }
}

if(is_uploaded_file($_FILES['file']['tmp_name'])) {
    echo $_FILES['file']['tmp_name'];
}

$archive = new PclZip($_FILES['file']['tmp_name']);
$extractpath = "../series/" . $_POST["serie"] . "/" . $_POST["capitulo"];

echo $extractpath;

if (file_exists($extractpath)) {

} else {
   mkdir($extractpath, 0755);
}

if (($archive->extract(PCLZIP_OPT_PATH, $extractpath, PCLZIP_CB_PRE_EXTRACT, 'preextract') == 0)) {
    echo "\n error in extraction";
} else {
    echo "\n done";
}
?>

1 Ответ

2 голосов
/ 21 марта 2012

Несколько вещей ...

  1. Вам необходимо увеличить максимальный размер файла для отправки больших файлов:

    ini_set( 'upload_max_filesize', '100M' );
    ini_set( 'post_max_size', '100M' );
    
  2. Изменить свойfile_exists check:

    if ( !file_exists( $extractpath ) )
        mkdir( $extractpath, 0755 );
    
  3. Изменить проверочный номер:

    return in_array( $info['extension'], array( 'png', 'jpg', 'jpeg', 'gif' ) ) ? 1 : 0;
    

Не уверен, почему он работает только наодно расширение, может быть, PclZip имеет настройку, запрещающую определенные файлы, поэтому поищите это.

...