Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Сергей Суслов Гость
|
Добавлено: Сб Мар 16 2002 21:06 Заголовок сообщения: Хелп ми плиз! Как обычно записывают файлы на www-сайтах? |
|
|
Как обычно записывают файлы на www-сайтах? Если файл присылается на сервер (например фотография), то обычно они (файлы) размещаются в БД или пишутся на сервер? |
|
Вернуться к началу |
|
|
Dmitry.Karpov http://www. Гость
|
Добавлено: Сб Мар 16 2002 21:39 Заголовок сообщения: Обычно пишутся на сервер. |
|
|
На подавляющем большинстве серьезных Web-серверов Internet работает Apache, а он держит HTML-страницы в файлах. Файловая система - это же своего рода база данных, только не табличная, а иерархическая, вроде DNS...
PS: Поставь себе Apache - он бесплатен! |
|
Вернуться к началу |
|
|
Сергей Суслов Гость
|
Добавлено: Сб Мар 16 2002 22:14 Заголовок сообщения: Re: Обычно пишутся на сервер. |
|
|
Спасибо! Но я имел ввиду, если файлы присылаются на сервер через формы. Например, картинки на этом форуме куда они складируются? Если в БД, то как на PHP записать в MySQL файл?! |
|
Вернуться к началу |
|
|
Dmitry.Karpov http://www. Гость
|
Добавлено: Сб Мар 16 2002 23:00 Заголовок сообщения: Не надо "если" - узнай у хозяина |
|
|
Записать файл в БД можно и нужно как строку заранее неопределенной длины (место под нее выделяется динамически в зависимости от размера). IMHO. Только это на фиг никому не нужно - файловая система справляется с этим ничуть не хуже, транзакции делать тут не требуется, выборки по разным ключам тоже. |
|
Вернуться к началу |
|
|
anDeRan
Зарегистрирован: 02.03.2002 Сообщения: 29 Откуда: Одесса
|
Добавлено: Вс Мар 17 2002 07:44 Заголовок сообщения: Re: Обычно пишутся на сервер. |
|
|
Хмм... Записывать графику в БД?! Что за изврат в веб-программировании? Ты похоже софт-программер... |
|
Вернуться к началу |
|
|
Сергей Суслов Гость
|
Добавлено: Вс Мар 17 2002 12:39 Заголовок сообщения: Re: Обычно пишутся на сервер. |
|
|
Ну да. А почему так не делают? Ведь куча файлов - тоже не очень приятно. Плюс нужна система имён и целостный внешний ключ! В БД писать было бы проще и удобнее!(??) |
|
Вернуться к началу |
|
|
Сергей Суслов Гость
|
Добавлено: Вс Мар 17 2002 12:52 Заголовок сообщения: Re: Не надо "если" - узнай у хозяина |
|
|
MySQL (у меня под Linux) почему-то не желает писать графический файл в mediumblob. Т.е. выдаёт ошибку по запросу insert into!.. "...файловая система справляется с этим ничуть не хуже..." - с БД удобнее - не надо системы имён и целостный внешний ключ на файлы. И PHP-скрипту никак не поставить права на запуск др.программ (или можно?) -> нужно разрешить запись в каталог для всех! |
|
Вернуться к началу |
|
|
Dmitry.Karpov http://www. Гость
|
Добавлено: Вс Мар 17 2002 18:40 Заголовок сообщения: Грязный извращенец! |
|
|
Посмотри, сколько файлов содержат Unix, Windows и любая другая современная OS! Squid под Unix великолепно хранит Web-кэш в файлах!
Придумывать идентификаторы страницам все равно придется - имена, номера или еще как, так что и в БД, и в файловой системе все будет выглядеть примерно одинаково, только в файловой системе это будет работать эффективнее - будет запускаться меньше дополнительного кода.
Насчет целостности я вообще не понял - ведь сайт работает в режиме "один изредка пишет, остальные часто читают - транзакции вообще тут не нужны, они только тормозить будут...
Проблему с PHP я не понял - скорее, в БД будет больше проблем, чем в файловой системе, т.к. PHP заточен на работу в файловой системе... |
|
Вернуться к началу |
|
|
Сергей Суслов Гость
|
Добавлено: Вс Мар 17 2002 20:58 Заголовок сообщения: Re: Грязный извращенец! |
|
|
...И PHP-скрипту никак не поставить права на запуск др.программ (или можно?) -> нужно разрешить запись в каталог для всех!
Т.е. как организовать складирование файлов в каталог? Вариант: rwx-wx-wx на некоторый каталог и в него скрипт сможет записывать файлы. Но тогда проблеа защиты: если хакер узнает имя каталога, то сможет там всё удалить!
Плюс ещё возникла одна проблема: с помощью медиа-типа multipart/form-data данные формы поля типа file попадают на сервер в некий временный файл, который копируется на PHP командой copy($f1,"myfile.jpg"); но затем myfile.jpg не читается даже ACDSee (!), хотя размер и кодировка те же. Также пробовал копировать fread() b fwrite - та же история! Как правильно скопировать? Заранее спасибо, Сергей. |
|
Вернуться к началу |
|
|
Dmitry.Karpov http://www. Гость
|
Добавлено: Вс Мар 17 2002 21:14 Заголовок сообщения: SuEXEC |
|
|
Есть стандартное (пожалуй, единственно правильное) решение доступа скрипта к данным - скрипт запускается с правами того, кто его туда положил. В Apache это - SuEXEC, обеспечивается средствами Apache (спрашивай хозяина хостинга). Иначе все скрипты будут иметь одинаковый доступ к данным - от имени WebUser (есть такой параметр в Apache). Ну или возможно хранение данных в БД, но тогда БД должна различать скрипты - возможно, каждый скрипт должен коннектиться с паролем...
А зачем копировать $f1 в "myfile.jpg", я не понял - не лучше ли использовать прямо $f1? |
|
Вернуться к началу |
|
|
Сергей Суслов Гость
|
Добавлено: Вс Мар 17 2002 21:44 Заголовок сообщения: Re: SuEXEC |
|
|
...Ну или возможно хранение данных в БД, но тогда БД должна различать скрипты - возможно, каждый скрипт должен коннектиться с паролем... - так и есть, доступ по паролю! ...А зачем копировать $f1 в "myfile.jpg", я не понял - не лучше ли использовать прямо $f1? - $f1 - временный - он присылается полем типа file формой с типом multipart/form-data! А вот писать файл в БД так у меня и не получается! $string = fread($f,filesize($f)); QUERY: insert into table values('','$strig',...) и... Ошибка по запросу! Обычные txt-копируются нормально. А вот графика с самыми разными символами - на каком-то управляющем символе прекращается! Как правильно писать в БД графику?! |
|
Вернуться к началу |
|
|
Dmitry.Karpov http://www. Гость
|
Добавлено: Вс Мар 17 2002 21:51 Заголовок сообщения: А стОит ли так уповать на БД? |
|
|
Во-первых, можно хранить графику в файлах, как и положено. Во-вторых, можно использовать метод типа UuEncode или Base64 - как бинарные файлы передаются по почте. Наверно, какой-то символ (возможно, нулевой) используется в БД как специальный... |
|
Вернуться к началу |
|
|
Сергей Суслов Гость
|
Добавлено: Вс Мар 17 2002 22:20 Заголовок сообщения: Ответ на: "А стОит ли так уповать на БД?- Dmitry.Karpo..- 17-03-2002 21:51" Re: А стОит ли так уп |
|
|
...метод типа UuEncode или Base64 - в передаваемой переменной записывается путь и имя файла у пользователя (при этом файл не высылается(?))! А как правильно сам файл передать на сервер? |
|
Вернуться к началу |
|
|
Dmitry.Karpov http://www. Гость
|
Добавлено: Ср Мар 20 2002 16:00 Заголовок сообщения: А как без системы имен? |
|
|
Система имен нужна для организации ссылок для переходов и для включения одной картинки в разные страницы. Без системы имен тут никуда. А что за "целостный внешний ключ"? Я такого не знаю... |
|
Вернуться к началу |
|
|
Сергей Суслов Гость
|
Добавлено: Чт Мар 21 2002 12:19 Заголовок сообщения: Ответ на: "А стОит ли так уповать на БД?- Dmitry.Karpo..- 17-03-2002 21:51" Re: А стОит ли так уп |
|
|
А как правильно на PHP записать присланый файл на сервер? Пробовал copy, fopen & fread & fwrute. Но проблема таже: при записе на сервер происходит перекодирование из win в koi! Пробовал перекодировать convert_cyr_string и вроде бы внешне файл приводится к нормальному виду, но не читается - получается ошибка формата! Как правильно писать? |
|
Вернуться к началу |
|
|
Сергей Суслов Гость
|
Добавлено: Чт Мар 21 2002 12:24 Заголовок сообщения: Re: А как без системы имен? |
|
|
А как правильно на PHP записать присланый файл на сервер? Пробовал copy, fopen & fread & fwrute. Но проблема таже: при записе на сервер происходит перекодирование из win в koi! Пробовал перекодировать convert_cyr_string и вроде бы внешне файл приводится к нормальному виду, но не читается - получается ошибка формата! Как правильно писать? |
|
Вернуться к началу |
|
|
Dmitry.Karpov http://www. Гость
|
Добавлено: Чт Мар 21 2002 13:22 Заголовок сообщения: Тряси хозяина хостинга... |
|
|
Хорошие у тебя задачки - не зная даже что за сайт, не имея возможности попробовать, мы долны угадать, что там неправильно подкручено! Спроси хозяина хостинга! А если сайт твой, то надо отказаться от перекодировки и хранить в том виде, в котором выдается юзеру. Кстати, можно выдавать юзеру в КОИ-8! Но боюсь, проблема связана с перавильной интерпретацией символов перевода строкИ... |
|
Вернуться к началу |
|
|
Dmitry.Karpov http://www. Гость
|
Добавлено: Чт Мар 21 2002 13:22 Заголовок сообщения: Тряси хозяина хостинга... |
|
|
Хорошие у тебя задачки - не зная даже что за сайт, не имея возможности попробовать, мы долны угадать, что там неправильно подкручено! Спроси хозяина хостинга! А если сайт твой, то надо отказаться от перекодировки и хранить в том виде, в котором выдается юзеру. Кстати, можно выдавать юзеру в КОИ-8! Но боюсь, проблема связана с неправильной интерпретацией символов перевода строкИ... |
|
Вернуться к началу |
|
|
|