<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dipsa.RU &#187; Web-разработка</title>
	<atom:link href="http://dipsa.ru/category/web-develop/feed/" rel="self" type="application/rss+xml" />
	<link>http://dipsa.ru</link>
	<description>Блог программиста</description>
	<lastBuildDate>Mon, 21 Nov 2011 12:32:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Загрузка файлов и их хранение</title>
		<link>http://dipsa.ru/2010/06/11/load-and-save-file/</link>
		<comments>http://dipsa.ru/2010/06/11/load-and-save-file/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 07:53:56 +0000</pubDate>
		<dc:creator>builder</dc:creator>
				<category><![CDATA[Web-разработка]]></category>
		<category><![CDATA[Интранет системы]]></category>

		<guid isPermaLink="false">http://dipsa.ru/?p=92</guid>
		<description><![CDATA[Поделюсь своим опытом загрузки и хранения файлов в интранет системе. Основные проблема хранения файлов это сохранить о нём данные и имена фалов в кириллице. Для решения этой проблемы необходимо хранить информацию о файле (имя на русском, и mime тип файла и т.п.). Все это лучше организовать с помощью базы данных. Создадим таблицу (MySQL): CREATE TABLE [...]]]></description>
			<content:encoded><![CDATA[<p>Поделюсь своим опытом загрузки и хранения файлов в интранет системе.</p>
<p>Основные проблема хранения файлов это сохранить о нём данные и имена фалов в кириллице. Для решения этой проблемы необходимо хранить информацию о файле (имя на русском, и mime тип файла и т.п.). Все это лучше организовать с помощью базы данных.</p>
<p><span id="more-92"></span>Создадим таблицу (MySQL):</p>
<pre class="brush:sql">CREATE TABLE UploadFiles
(
Id INT (11) NOT NULL AUTO_INCREMENT,
Attached_alias VARCHAR (20) DEFAULT NULL COMMENT 'Прикреплён к чему',
Attached_id INT (11) DEFAULT NULL COMMENT 'Прикремпён к ключу',
Local_name VARCHAR (80) DEFAULT NULL COMMENT 'Имя файла на диске',
Type VARCHAR (50) DEFAULT NULL COMMENT 'mime тип файла при загрузке',
Name VARCHAR (250) DEFAULT NULL COMMENT 'Оригинальное имя',
Ext VARCHAR (20) DEFAULT NULL COMMENT 'Расширение файла',
Size INT (11) DEFAULT NULL COMMENT 'Размер файла в байтах',
PRIMARY KEY (Id)
)</pre>
<p>Поле Attached_alias &#8212; указывает какой модуль загружал файл (например прикреплено к сообщению гостевой или к сообщению форума).</p>
<p>Поле Attached_id &#8212; указывает ID сообщения.</p>
<p>Загрузка файла:</p>
<pre class="brush:php">//Загрузка файлов
foreach($_FILES as $file) {

$insert_file = null;

if ($file['tmp_name'] != '') {

//Преобразуем имя для сохранения
$insert_file['Attached_alias'] = 'mes';
$insert_file['Attached_id'] = $insert['Id'];
$insert_file['Local_name'] = 'mes_'.$insert['Id'].'_'.md5($file['tmp_name'].date('ydmhis')).'.ulf';

move_uploaded_file($file['tmp_name'], UPLOAD_PATH.$insert_file['Local_name']);

$insert_file['Name'] = $file['name'];
$Ext = explode('.', $file['name']);
$insert_file['Ext'] = strtolower($Ext[sizeof($Ext) - 1]);
$insert_file['Type'] = $file['type'];
$insert_file['Size'] = $file['size'];

$this-&gt;db-&gt;insert('UploadFiles', $insert_file);

}

}</pre>
<p>В строке 11 придумываем функцию для хэширования имени файлов используя время, это необходимо для того, чтобы имя файла всегда было уникальным, вероятность того что хэш имени файла с временем загрузки файла совпадёт ничтожно мала.</p>
<p>Имя файла получается похожим на: mes_161_342631bc07c109c538ee48ed4d1a329f.ulf</p>
<p>Это даёт дополнительные преимущества:</p>
<ul>
<li>файл нельзя загрузить напрямую (если требуется авторизация и прочее)</li>
<li> информацию о файле всегда можно получить из БД не теребя файловую систему</li>
<li> можно обрабатывать данные о скачивании файла (например: сколько раз, кто, в какое время).</li>
</ul>
<p>Процедура скачивания файла пользователем (php+CodeIgniter):</p>
<pre class="brush:php">//Обезопашиваем входные данные
$id = (int)$id;
if ($id == 0) show_404();

//Запрос информации о файле
$query = $this-&gt;db-&gt;get_where('UploadFiles', array('Id' =&gt; $id));
if ($query-&gt;num_rows() == 1)
{

$row = $query-&gt;row_array();

$type = $row['Type'];
$file_name = $row['Name'];
$file_path = UPLOAD_PATH.$row['Local_name'];

$file_name = iconv("utf-8", "windows-1251", $file_name);    //Конвертируем кодировку имени файла

//Отправляем пользователю
header('Content-Type: content='.$type);
header('Content-Disposition: attachment; filename="'.$file_name.'"');
readfile($file_path);

} else show_404();</pre>
<p>По моему очень удобно, может кому-то пригодится.</p>
]]></content:encoded>
			<wfw:commentRss>http://dipsa.ru/2010/06/11/load-and-save-file/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Дополнение Dramweaver CS4 для CodeIgniter 1.7</title>
		<link>http://dipsa.ru/2010/03/16/dwforci/</link>
		<comments>http://dipsa.ru/2010/03/16/dwforci/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 06:49:25 +0000</pubDate>
		<dc:creator>builder</dc:creator>
				<category><![CDATA[Web-разработка]]></category>

		<guid isPermaLink="false">http://dipsa.ru/?p=79</guid>
		<description><![CDATA[Выкладываю своё дополнение (плагин) к Adobe Dreamweaver для помощи в разработке на ClodeIgniter 1.7 Для установки просто скопируйте файлы из архива в папку с установленным Dreamweaver-ом. Кстати по аналогии (файлы формата xml) можете добавлять и собственные функции и описания (файл CodeIgniter.xml) и собственные функциональные кнопки на панели инструментов (папка Objects). Примечание: Вызвать меню вставки можно [...]]]></description>
			<content:encoded><![CDATA[<p>Выкладываю своё дополнение (плагин) к Adobe Dreamweaver для помощи в разработке на ClodeIgniter 1.7</p>
<p><a rel="attachment wp-att-82" href="http://dipsa.ru/2010/03/16/dwforci/screenshotdw/"><img class="aligncenter size-full wp-image-82" title="Скриншот DW с помошником CI" src="http://dipsa.ru/wp-content/uploads/2010/03/screenshotdw.jpg" alt="" width="529" height="392" /></a></p>
<p><a rel="attachment wp-att-85" href="http://dipsa.ru/2010/03/16/dwforci/screenshotdw2/"><img class="aligncenter size-full wp-image-85" title="screenshotdw2" src="http://dipsa.ru/wp-content/uploads/2010/03/screenshotdw2.jpg" alt="" width="579" height="114" /></a></p>
<p>Для установки просто скопируйте файлы из архива в папку с установленным  Dreamweaver-ом. Кстати по аналогии (файлы формата xml) можете добавлять и собственные функции и описания (файл CodeIgniter.xml) и собственные функциональные кнопки на панели инструментов (папка Objects).</p>
<p><em>Примечание: </em>Вызвать меню вставки можно нажав клавиши Ctrl+Space</p>
<p><a href="http://dipsa.ru/files/DW_for_CI.zip">Скачать </a>(22,2Кб)</p>
]]></content:encoded>
			<wfw:commentRss>http://dipsa.ru/2010/03/16/dwforci/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

