@haa

Какие могут быть ограничение при загрузке файлов через Ajax на сервер?

Доброго времени суток! Не загружаются картинки больше 1 мб через Ajax на сервер, на локальном все работает. На сервере upload_max_filesize - 100M. Скрипт который создает картинку.
// Вытаскиваем необходимые данные
$file = $_POST['value'];
$name = $_POST['name'];
$text = $_POST['text'];

// Получаем расширение файла
$getMime = explode('.', $name);
$mime = end($getMime);

// Выделим данные
$data = explode(',', $file);

// Декодируем данные, закодированные алгоритмом MIME base64
$encodedData = str_replace(' ','+',$data[1]);
$decodedData = base64_decode($encodedData);

//  произвольное имя!
$randomName = md5(microtime()).'.'.mb_strtolower($mime);

// Создаем изображение на сервере
$img = file_put_contents($uploaddir.$randomName, $decodedData);

Может ли быть проблема file_put_contents ?
  • Вопрос задан
  • 275 просмотров
Решения вопроса 1
Stalker_RED
@Stalker_RED
У вас загрузка файла почему-то идет не через $_FILE а через $_POST в виде base64.
У него отдельно лимит настраивается: post_max_size.

UPD: А картинки, по хорошему, обрабатываются как-то так
if (isset($_FILES[$input_file_name])) {
    if (!empty($_FILES[$input_file_name]['error'])) {
        $upload_error_code = $_FILES[$input_file_name]['error'];
        if ($upload_error_code == 4) {
            return false; // file not loaded (probably not choosen)
        } else {
            throw new Exception(
                $this->fileUploadCodeToMessage($upload_error_code));
        }
    } else {
        $uploaded = $_FILES[$input_file_name]['tmp_name'];
        if (!is_uploaded_file($uploaded)) {
            throw new Exception(
                "Possible file upload attack: ".$uploaded);
        }
        if (!file_exists($uploaded)) {
            throw new Exception( "File: ".$uploaded." not found.");
        }
        // is image?
        if (!$size = getimagesize($uploaded)){
            throw new Exception('Unsupported file format');
        }
        $dirname = dirname($dest_filename);
        if (!is_dir($dirname)) {
            // full for owner, read and exec(?) for others, recursive creation
            mkdir($dirname, 0755, true);
        }
        if (move_uploaded_file($uploaded, $dest_filename)) {
            return chmod($dest_filename, 0644); // RW for owner, read for everybody else
        } else {
            throw new Exception(
                "Can't move uploaded file: "
                ."\nfilesize=".filesize($uploaded)
                ."\ndisk_free_space=".disk_free_space($dirname));
        }
    }
} else return false;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы