Поиск

Найдено 14 статьи по слову "cto"

Создание zip архива папки с вложенными папками в PHP

Для такой задачи потребуется рекурсивный обход вложенных папок, и добавление их в архив. Эту задачу (в данном случае) выполняет функция ZipDirectory, которая вызывается рекурсивно. Функция ZipFull же проверяет, возможно ли создать zip-архив, запускает ZipDirectory и закрывает файл при завершении обхода папок.

function ZipDirectory($src_dir, $zip, $dir_in_archive='') {
    $dirHandle = opendir($src_dir);
    while (false !== ($file = readdir($dirHandle))) {
        if (($file != '.')&&($file != '..')) {
            if (!is_dir($src_dir.$file)) {
                $zip->addFile($src_dir.$file, $dir_in_archive.$file);
            } else {
                $zip->addEmptyDir($dir_in_archive.$file);
                $zip = ZipDirectory($src_dir.$file.DIRECTORY_SEPARATOR,$zip,$dir_in_archive.$file.DIRECTORY_SEPARATOR);
            }
        }
    }
    return $zip;
}

function ZipFull($src_dir, $archive_path) {
    $zip = new ZipArchive();
    if ($zip->open($archive_path, ZIPARCHIVE::CREATE) !== true) {
        return false;
    }
    $zip = ZipDirectory($src_dir,$zip);
    $zip->close();
    return true;
}

Использование, например, следующее:

if (ZipFull('D:/test/','D:/result.zip')) {
    echo 'Архив успешно создан!';
} else {
    echo 'Ошибка при создании архива!';
}

Более подробно про ZipArchive вы можете почитать здесь - http://php.net/manual/en/ziparchive.open.php.

php

Уникальные названия файлов при загрузке в Django

Django при сохранении файла через админку или форму сохраняет название файла. Например, при загрузке картинки "mypic.jpg" она сохранится с этим названием.
Также, если загружаемый файл на русском языке, то его имя будет сохранено - “моя_картинка.jpg”. Вы можете изменить этот механизм.

ПРИМЕЧАНИЕ. Последующие загружаемые файлы с таким названием будут иметь префикс "_", т.е. "_mypic.jpg", "__mypic.jpg" и т.п.

Пример реализации
Этот код должен быть помещен в файл models.py нужного вам приложения.

import os, uuid

def get_file_path(instance, filename):
    ext = filename.split('.')[-1]
    filename = "%s.%s" % (uuid.uuid4(), ext)
    return os.path.join(instance.directory_string_var, filename)

class MyModelFiles(models.Model):
    myimage = models.FileField(upload_to = get_file_path)
    directory_string_var = 'my-path-to-files-for-this-model'

class MyModelImages(models.Model):
    myimage = models.ImageField(upload_to = get_file_path)
    directory_string_var = 'my-path-to-images-for-this-model'

Таким образом, при следующей загрузке файла его имя будет выглядеть, например, так «384408e1-5465-46fd-bf47-61f913fa78e5.jpg».
Протестировано на версии Django 1.3.

django

Создание кнопок онлайн

При создании элементов на сайте или в оффлайн-приложениях часто требуется создать красивые кнопки. Для этого существует множество приложений, но нас интересуют сервисы с аналогичным функционалом в интернете. Смотрим и выбираем, кому что нравится.

Da Button Factory

http://dabuttonfactory.com

У этого сайта одна функция - создание кнопок. Настроек не слишком много, но можно просто и быстро создать неплохие кнопочки.

Аналоги

http://css-tricks.com/examples/ButtonMaker - кнопки без изображения (на css3).

http://jirox.net/AsButtonGen - китайский сервис, настроек больше, чем в Da Button Factory, но менее удобен.

Если вы знаете еще какие-либо онлайн-сервисы для создания кнопок, пожалуйста, оставьте их адреса в комментариях.

дизайн

Делаем правильные имена загружаемых картинок в django

Как известно, джанго при загрузке файла сохраняет его имя. Т.е. в имени файла вполне могут быть русские буквы - мы от этого не защищены. Я считаю, что лучше организовать изображения на сайте по хэшам или uuid. Это делается довольно просто, благодаря тому, что в джанго путь к картинке и имя файла можно генерировать функцией.

Давайте посмотрим, как это сделать.

import os, uuid

def get_file_path(instance, filename):
    ext = filename.split('.')[-1]
    filename = "%s.%s" % (uuid.uuid4(), ext)
    return os.path.join(instance.directory_string_var, filename)

    class MyModel(models.Model):
    myimage = models.FileField(upload_to = get_file_path)
    directory_string_var = 'my-path-to-images-for-this-model'

Таким образом, при следующей загрузке файла его имя будет выглядеть, например, так “384408e1-5465-46fd-bf47-61f913fa78e5.jpg”.

Встретился с данным решением на интересном англоязычном ресурсе stackoverflow.

django