Эмуляция $_FILES - возможно ли?

hussar

In code we trust!
Эмуляция $_FILES - возможно ли?

Всем доброе время суток!

На странице есть поле для загрузки файлов. При загрузке проверяется коректность имени файла, и если имя файла не соответствует заданным критериям, файл записывается в отдельную папку. Содержимое этой папки выводится пользователю, который может изменить имя файла, чтобы оно удовлетворяло заданному критерию. Далше у пользователя должна быть возможность загрузить этот файл снова.

Проблема в том что я не знаю (поиск по форуму ничего не дал) как мне передать скрипту на обработку этот измененый файл. Это необходимо сделать таким образом, тобы пользователь нажал кнопку и файл загрузился.

Подскажите в какую сторону нужно копать для решения этой задачи? Насколько я понимаю мне надо каким-то образом загнать этот файл в массив $_FILES.

Всем заранее спасибо!
 

hussar

In code we trust!
Пользователь меняет без проблем, просто потом когда он поменял, мне это надо перенаправить в форму по нажатию кнопки, а вот как это именно сделать я не понимаю :(
 

Кром

Новичок
Ты тут какой-то ерунды напридумывал.

>Далше у пользователя должна быть возможность загрузить этот файл снова.

Два раза один файл грузить? Что за ерунда!

>как мне передать скрипту на обработку этот измененый файл.

Да как угодно, хоть по имени файла, хоть по какому нибудь идентификатору.

>Насколько я понимаю мне надо каким-то образом загнать этот файл в массив $_FILES.

Это вообще говорит о непонимании и незнании функций работы с файлами.

>просто потом когда он поменял, мне это надо перенаправить в форму по нажатию кнопки

Что ЭТО? Чтобы пользователь попал на другую страницу, что ли?
 

StUV

Rotaredom
hussar
если не нужна повторная закачка файла, то просто на серваке локально меняй имя файла на указанное юзером во второй (,...) раз - если через несколько попыток (или через какое-то время) юзер не ввел валидное имя - убивай файл.

мне это надо перенаправить в форму по нажатию кнопки
непонятно - зачем ?
 

hussar

In code we trust!
Произошла загрузка файлов на сервер (их много). Те файлы имя которых правильно ущли туда куда им и положено. Другие, имя которых не правильно, выводятся пользователю, который меняет им имя, и рядом с каждым файлом есть кнопка повторной загрузки файла на сервер. Я не понимаю как мне передать имя этого самого файла скрипту обработчику загрузки файлов.
 

Кром

Новичок
>Я не понимаю как мне передать имя этого самого файла скрипту обработчику загрузки файлов.

Надо написать отдельную функцию, которая меняет имя файла и перекладывает его в необходиму директорию.
 

MD

Guest
ты читать умеешь? тебе написали ведь уже, "ненадо ничего грузить на сервер второй раз". есть такие команды как rename например ... подумай об этом на досуге.
 

hussar

In code we trust!
Нет вы меня все не поняли. rename я использую и вполне удачно.

При загрузке каждый файл, разбирается скриптом и его содержимое заносится в БД. Те файлы которые не прошли проверку на коректность имени складываются в отдельную директорию. Дальше пользователь эти файлы переименовывает. Здесь никаких проблем нет.

Далее рядом с каждым файлом есть кнопка оправки повторно чтобы скрипт его разобрал и содержимое засунул в базу. Вопрос в том как мен передать этот файл в скрипт разбора, котрый работает с массивом $_FILES.
 

wizard

Новичок
файлы в базе :))
так не делают
(ведь это наверное картинки?)


а зачем файл разбирать,
если надо только имя сменить?
зачем повторно отправлять? видать архитектура приложения твоего хромает...
 

hussar

In code we trust!
:)
Файл не в базе, в базе содержимое файла, т.е. текст.
НО в базу может попасть содержимое только тех файлов у которых правильное имя.

Если имя не правильное, его надо поменять, что реализовано мной уже. А затем опять этот файл обработать, чтобы и его содержимое попало в базу
 

MD

Guest
значит мутишь гемор.
что мешает сначала складывать файлы куда надо, а потом их обрабатывать уже ... и с $_FILES работать только на этапе аплоада ? (неважно плохих или хороших файлов)
 

StUV

Rotaredom
hussar
1. если имя файла правильное - распарсить и поместить в базу, если нет - скопировать файл под введенным именем в некую директорию и предложить юзеру изменить имя файла
2. если юзер ввел валидное имя - распарсить файл и в базу - если нет - предлагать ему ввести нормальное имя до бесконечности или убить файл и предложить его загрузить по новой.

какой шаг не ясен ???
 

hussar

In code we trust!
Мне ясны все шаги.

У меня на странице есть несколько полей для загрузки файлов, пользователь их загружает, содержимое считыввается в базу, а файл удаляется, а те файлы у которых неправильное имя складываются в отдельную директорию.
Содержимое этой директории выводится на этой же странице под формой для ввода файлов. Так же на этой стрнаице есть возможность переименовать файл (она успешно работает), и также НА ЭТОЙ СТРАНИЦЕ рядом с каждым переименованым файлом есть кнопка повторной загрузки фала, что бы и его содержимое попало в базу. Вот с этой кнопкой и есть проблема у меня.
 

wizard

Новичок
ну если файл переименовали как надо,
то и считывай его в базу прям из этой папки, зачем грузить то?
 

hussar

In code we trust!
наконец-то меня вроде поняли. :)

Проблема в том что тот код который разбирает файл заточен для работы с массивом $_FILES. Я могу его немного модифицировать и разбирать файл из нужной директории им же, но тогда у меня будет на странице два почти одинаковых куска кода, а это не очень красиво. Вот я испрашиваю можно ли как-то это место более красиво разрулить.
 

wizard

Новичок
ну и код -- заточенный!
не судьба отделить код парсинга файла? можно сделать функцию парсинга и использовать её и для $_FILES и для переименованных файлов.
немного абстракции вроде всегда полезно...
 

Кром

Новичок
hussar, тебя поняли уже давно, а вот ты пока жестко тормозишь. Когда ты поймешь, что файл становиться файлом не от того, что ссылка на него лежит в массиве $_FILES, тебе станет гораздо легче. И если есть функция, которая работает только с этим массивом, значит ее нужно поправить, что бы она работал с тем файлом, имя которого ей передают в качества аргумента, независимо от того, где он находится.
 
Сверху