Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Последовательность действий при оптовом аплоаде файлов
 
 автор: provodnik   (03.01.2008 в 01:51)   письмо автору
 
 

Ночи доброй коллеги. Что то никак я не соображу, помогайте.
У меня реализован аплоад так:
Проверяю переменные;
Загоняю данные в БД;
Узнаю mysql_insert_id();
Относительно mysql_insert_id() назначаю имена нескольким загружаемым файлам.

Но: если файл по какой-либо причине не догрузился или ещё-чего, то получается файла на сервере нет, а запись о нём в БД есть...
Если начинаю обрабатывать файло в начале, то не могу знать значение инкремента, с которым лягут данные об этом файле в БД...

Как поступить?
Заранее благодарен...

   
 
 автор: Unkind   (03.01.2008 в 02:02)   письмо автору
 
   для: provodnik   (03.01.2008 в 01:51)
 

Проверка на успешность загрузки никак не может помешать в дальнейшем при необходимости произвести какие-то действия с базой данных (она вообще тут не при чем).

http://php.net/manual/ru/features.file-upload.php

   
 
 автор: provodnik   (03.01.2008 в 02:09)   письмо автору
 
   для: Unkind   (03.01.2008 в 02:02)
 

Да Вы меня не совсем правильно поняли:
Имена файлам присваиваются относительно значения автоикрементного id из БД.
Т.е. я делаю так: вставляю данные в БД. Узнаю mysql_insert_id(). В соответствии с этим значениям даю имена файлам...

   
 
 автор: Unkind   (03.01.2008 в 02:15)   письмо автору
 
   для: provodnik   (03.01.2008 в 02:09)
 

Я прекрасно понял что Вы делаете. Я не понял при чем тут раздача имен файлов, когда файлы еще не прошли проверку. Имена Вы должны давать (и что-то куда-то там вставлять в БД) после успешной проверки файла. Вы ведь файл, надеюсь, хотите сохранять (или копировать из временной директории) до проверки?

   
 
 автор: provodnik   (03.01.2008 в 02:26)   письмо автору
 
   для: Unkind   (03.01.2008 в 02:15)
 

Я ж говорю, Вы не правильно меня понимаете.
У меня всё реализовано - и проверка успешности и всё, всё, всё... Просто в случае не успешной загрузки вываливаю ошибку, но запись в БД с данными о этих файлах то уже вставлена (иначе как я узнаю mysql_insert_id)...
Вот я и думаю - либо мне после неуспешной загрузки файла производить запрос на удаление данных об этом файле из БД, либо есть какое то решение, которое позволит придержать файл во временной директории на сервере, пока я не проверю успешную загрузку этого файла, пока данные об этом файле успешно не лягут в БД, и пока я его не переименую в нужное мне имя?!
Прошу прощения за сумбурность...

   
 
 автор: Unkind   (03.01.2008 в 02:30)   письмо автору
 
   для: provodnik   (03.01.2008 в 02:26)
 

В самом начале файл должен быть во временной директории с уникальным именем.
При загрузке через форму сохранение во временную (tmp) папку происходит автоматически без Вашего вмешательства. Нужно проверить файл на успешность загрузки ($_FILES['file']['error'] == 0).
А после перемещать, и вставлять запись, и задавать имя, которое Вы хотите, и так далее и тому подобное.

Если загрузка происходит иными способами (с удаленного сервера, например), то сохраняйте в самом начале скрипт в какую-то tmp-директорию сами. А после производите вышеописанные действия.

   
 
 автор: provodnik   (03.01.2008 в 02:33)   письмо автору
 
   для: Unkind   (03.01.2008 в 02:30)
 

Всё, ушел спать... Ничего не понимаю, чертовы праздники.
За совет со своей тмп директорией спасибо, завтра надеюсь домучаю...

   
 
 автор: Unkind   (03.01.2008 в 02:41)   письмо автору
 
   для: provodnik   (03.01.2008 в 02:33)
 

Каждый проблемы на праздники сваливает...

   
 
 автор: Trianon   (03.01.2008 в 09:35)   письмо автору
 
   для: provodnik   (03.01.2008 в 02:26)
 

>есть какое то решение, которое позволит придержать файл во временной директории на сервере, пока я не проверю успешную загрузку этого файла, пока данные об этом файле успешно не лягут в БД, и пока я его не переименую в нужное мне имя?!

А собственно, кто собирается покушаться на этот файл, до завершения работы скрипта?
Проверьте, если надо - переименуйте в другое временное имя (дописав к примеру в хвост имени фиксированный суффикс).
Потом определите остальные параметры.
Потом добавьте запись в таблицу.
Потом выполните окончательное переименование в имя, построенное по mysql_insert_id()

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования