[PHP] file upload
if (is_uploaded_file($art_imgА вообще ошибок много.
{
db_conn;
$array=explode(".",$art_img_name);
здесь-то как раз всё нормально - так и нужно... Как бы сделать всё остальное...
Так и должно быть, что параметр называется одним словом, а данные ты берешь из другой переменной?
Именно... аплоад так и работает. Ну, можно обратиться к $HTTP_POST_VARS, но register_globals=on
$file = fopen($art_img, "rb");
с чего б? Не бывает такого...
Или используй file_get_contents
2) $insertQuery не заполняется вообще - ну это может быть у тебя запрос неправильный, в таблице к примеру поля перепутал или тип не тот, у тебя же в запросе явно не указано, в какие поля пишется.
3) Конечно лучше бы если было через $_FILES, я бы мог на своем хостинге посмотреть где register_globals=off
4) Просто совет - если ты действительно хочешь определить именно тип файла (*.jpg - я так любой файл назвать могу) - юзай GetImageSize.
И вообще, идея хранить файл в базе порочна.
Целиком и полностью поддерживаю!
mode Description
'r' Open for reading only; place the file pointer at the beginning of the file.
'r+' Open for reading and writing; place the file pointer at the beginning of the file.
'w' Open for writing only; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it.
'w+' Open for reading and writing; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it.
'a' Open for writing only; place the file pointer at the end of the file. If the file does not exist, attempt to create it.
'a+' Open for reading and writing; place the file pointer at the end of the file. If the file does not exist, attempt to create it.
'x' Create and open for writing only; place the file pointer at the beginning of the file. If the file already exists, the fopen call will fail by returning FALSE and generating an error of level E_WARNING. If the file does not exist, attempt to create it. This is equivalent to specifying O_EXCL|O_CREAT flags for the underlying open(2) system call. This option is supported in PHP 4.3.2 and later, and only works for local files.
'x+' Create and open for reading and writing; place the file pointer at the beginning of the file. If the file already exists, the fopen call will fail by returning FALSE and generating an error of level E_WARNING. If the file does not exist, attempt to create it. This is equivalent to specifying O_EXCL|O_CREAT flags for the underlying open(2) system call. This option is supported in PHP 4.3.2 and later, and only works for local files.
А за совет спасибо - посмотрю.
Почему? Где его еще хранить?
2) $insertQuery=NULL в этом скрипте. О выполнении запроса пока речи не идет.
3) Да пофиг...
4) Тоже тема
поясни
в файлах...
$insertQuery=NULL в этом скриптевот это мне непонятно.
Кстати по поводу regiter_globals, хотя тема сто раз и обсуждалась, - я тоже раньше думал что пофиг, но вот как-то пришлось переносить скрипты на хостинг где register_globals=off... По-моему сразу лучше под это писать
какие при этом появляются плюсы?
Читай Note после этой таблицы.
1) Дык вывожу на экран элементарно:)Бинарный файл?!
Насчет $insertQuery - вот и мне непонятно:(
Типа, перекачка файла по каналам БД - это уже некисло. Например, если база не на одном компе с серваком стоит.
да по барабану... всё зависит от количества файлов имхо. Ну а мы вот решили не создавать кучу мелких файлов на винте, а хранить всё в одной базе и не мучаться
угу... прочитал... сенькс
2. Что б отдать юзеру файл, достаточно посмотреть в базе имя этого файла и отдать ссылку на него. Что б отдать файл из базы нужно его из базы достать, отстрипать слеши и отдавать скриптом. Лишняя нагрузка и на базу и на сервер.
там addslashes стоит, так что не вижу в этом проблемы
Чем он помогает, когда на экран выводится символ \0 или \r ?
Вывел я на экран бинарный файл, но вот утверждать, правильно он отобразился или нет я утверждать не смею
да и пусть выводится...
дело говорит - addslashes здесь не пмогут.
К тому же отдачей просто файлов может заниматся отдельный, простой и быстрый сервер, типа mathopd или nginx.
хм... мы тут давеча, когда думали, как лучше хранить, специально протестировали - 6 мегов картинок штук 300-350 сервер выдал из базы ПХП-скриптом за 0.6 миллисекунды. Это к вопросу о нагрузке...
на сайтах - обычно используются маленькие файлы (1-100 килобайт).
> Что б отдать файл из базы нужно его из базы достать, отстрипать слеши и отдавать скриптом. Лишняя нагрузка и на базу и на сервер.
Реальная разница только на передачу файла по каналам базы, т.к. все остальные операции:
чтение данных с диска, запись данных в http-поток и т.д. - все равно делаются и в том, и в другом случае.
Реальная разница только на передачу файла по каналам базы, т.к. все остальные операции:Высокопроизводительные http сервера, работающие на высокопроизводительных ОС отсылают файлы с помощью системного вызова sendfile когда ядро ОС самостоятельно копирует файл в сокет, без копирования его в память процесса http сервера. Это позволяет отдавать тысячи объектов в секунду на скорости 100 Мбит/с. С базой такого никогда не получится.
чтение данных с диска, запись данных в http-поток и т.д. - все равно делаются и в том, и в другом случае.
Оставить комментарий
uncle17
$fileContents считывается неправильно, $insertQuery не заполняется вообще. Помогите найти ошибку...