|
|
|
| Ночи доброй коллеги. Что то никак я не соображу, помогайте.
У меня реализован аплоад так:
Проверяю переменные;
Загоняю данные в БД;
Узнаю mysql_insert_id();
Относительно mysql_insert_id() назначаю имена нескольким загружаемым файлам.
Но: если файл по какой-либо причине не догрузился или ещё-чего, то получается файла на сервере нет, а запись о нём в БД есть...
Если начинаю обрабатывать файло в начале, то не могу знать значение инкремента, с которым лягут данные об этом файле в БД...
Как поступить?
Заранее благодарен... | |
|
|
|
|
|
|
|
для: provodnik
(03.01.2008 в 01:51)
| | Проверка на успешность загрузки никак не может помешать в дальнейшем при необходимости произвести какие-то действия с базой данных (она вообще тут не при чем).
http://php.net/manual/ru/features.file-upload.php | |
|
|
|
|
|
|
|
для: Unkind
(03.01.2008 в 02:02)
| | Да Вы меня не совсем правильно поняли:
Имена файлам присваиваются относительно значения автоикрементного id из БД.
Т.е. я делаю так: вставляю данные в БД. Узнаю mysql_insert_id(). В соответствии с этим значениям даю имена файлам... | |
|
|
|
|
|
|
|
для: provodnik
(03.01.2008 в 02:09)
| | Я прекрасно понял что Вы делаете. Я не понял при чем тут раздача имен файлов, когда файлы еще не прошли проверку. Имена Вы должны давать (и что-то куда-то там вставлять в БД) после успешной проверки файла. Вы ведь файл, надеюсь, хотите сохранять (или копировать из временной директории) до проверки? | |
|
|
|
|
|
|
|
для: Unkind
(03.01.2008 в 02:15)
| | Я ж говорю, Вы не правильно меня понимаете.
У меня всё реализовано - и проверка успешности и всё, всё, всё... Просто в случае не успешной загрузки вываливаю ошибку, но запись в БД с данными о этих файлах то уже вставлена (иначе как я узнаю mysql_insert_id)...
Вот я и думаю - либо мне после неуспешной загрузки файла производить запрос на удаление данных об этом файле из БД, либо есть какое то решение, которое позволит придержать файл во временной директории на сервере, пока я не проверю успешную загрузку этого файла, пока данные об этом файле успешно не лягут в БД, и пока я его не переименую в нужное мне имя?!
Прошу прощения за сумбурность... | |
|
|
|
|
|
|
|
для: provodnik
(03.01.2008 в 02:26)
| | В самом начале файл должен быть во временной директории с уникальным именем.
При загрузке через форму сохранение во временную (tmp) папку происходит автоматически без Вашего вмешательства. Нужно проверить файл на успешность загрузки ($_FILES['file']['error'] == 0).
А после перемещать, и вставлять запись, и задавать имя, которое Вы хотите, и так далее и тому подобное.
Если загрузка происходит иными способами (с удаленного сервера, например), то сохраняйте в самом начале скрипт в какую-то tmp-директорию сами. А после производите вышеописанные действия. | |
|
|
|
|
|
|
|
для: Unkind
(03.01.2008 в 02:30)
| | Всё, ушел спать... Ничего не понимаю, чертовы праздники.
За совет со своей тмп директорией спасибо, завтра надеюсь домучаю... | |
|
|
|
|
|
|
|
для: provodnik
(03.01.2008 в 02:33)
| | Каждый проблемы на праздники сваливает... | |
|
|
|
|
|
|
|
для: provodnik
(03.01.2008 в 02:26)
| | >есть какое то решение, которое позволит придержать файл во временной директории на сервере, пока я не проверю успешную загрузку этого файла, пока данные об этом файле успешно не лягут в БД, и пока я его не переименую в нужное мне имя?!
А собственно, кто собирается покушаться на этот файл, до завершения работы скрипта?
Проверьте, если надо - переименуйте в другое временное имя (дописав к примеру в хвост имени фиксированный суффикс).
Потом определите остальные параметры.
Потом добавьте запись в таблицу.
Потом выполните окончательное переименование в имя, построенное по mysql_insert_id() | |
|
|
|