2011-01-14 4 views
3

Я использую Uploadify как часть формы. Позвольте мне дать вам немного фона, это может помочь. У меня есть форма, где пользователь может добавлять «проекты» на веб-сайт. Сначала они вводят название проекта и описание. В представлении это обновляет таблицу базы данных PHP/MySQL с именем «проект» и получает идентификатор.Загрузить JQuery & PHP/MySQL - изменить имя файла при загрузке

Пользователь может затем загружать файлы в местоположение на сервере. Я хочу добавить название проекта в начало имени файла для загрузки И ИД проекта (которое мне нужно добавить в базу данных), прежде чем загрузка начнется, а затем, когда загрузка завершится, добавьте данные файла в таблицу базы данных «image» - связанный с «проектом» через идентификатор проекта.

Я знаю, что я немного отскочил назад и вперед, мне нужно знать, как это сделать. Две таблицы базы данных для обновления, одна - в форме submit и одна - для загрузки файлов. Мне нужно передать имя проекта и ID в сценарий загрузки uploadify.

РЕШЕНИЕ:

я должен был использовать ниже Uploadify способа, чтобы отправить идентификатор проекта в Uploadify сценария, предварительно заполненный переменной pid с mysql_insert_id результата:

'onSelectOnce': function(event,data) { 
    $('#file_upload').uploadifySettings('scriptData', {'pid': pid}); 
} 

я мог тогда получить переменную pid в скрипте PHP uploadify, используя простой пост:

$pid = $_POST['pid']; 

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

$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/' . $alias . '-'; 
    $targetFile = str_replace('//','/',$targetPath) . $_FILES['Filedata']['name']; 

Надеется, что это поможет людям в будущее.

ответ

3

Мне пришлось использовать нижеуказанный метод выгрузки для отправки идентификатора проекта вверх loadify скрипт, предварительно заполненный переменная PID с результатом mysql_insert_id:

'onSelectOnce': function(event,data) { 
    $('#file_upload').uploadifySettings('scriptData', {'pid': pid}); 
} 

я мог бы получить переменные ИКА в PHP Uploadify сценария с помощью простого поста:

$pid = $_POST['pid']; 

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

$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/' . $alias . '-'; 
$targetFile = str_replace('//','/',$targetPath) . $_FILES['Filedata']['name']; 

Hopeful Это поможет людям в будущем.

+1

Я использую этот плагин вместе с загруженным php классом. Искать в google для upload.class.php. Я использую PHP для обработки имен файлов и загрузки моего файла на свой сервер. Затем я могу отправить новое имя, или я могу переименовать «на лету» со сценарием, чтобы JS выбрал его и вывел все, что я хочу, с функциями обратного вызова. – Eli

+0

Это не сработало чувак – ravi404

+0

@ravz, тогда у вас должно быть что-то еще в вашем коде. Я разместил это как решение моего собственного вопроса, потому что это решение, которое я использовал, чтобы заставить его работать. Это почти год, и я использовал его для многих проектов, поэтому по опыту знаю, что он работает. Возможно, задайте новый вопрос и разместите часть своего кода, чтобы мы могли помочь вам напрямую. –

1

В сценарии добавления есть часть, которая дает синтаксис файла, обрабатываемого формой загрузки. У меня нет сценария под рукой, но uplodify hs перед полным обратным вызовом и функциями полного вызова.

используйте перед заполнением и добавьте имя в запрос ajax, который сохранит его в вашей базе данных, оттуда просто выполните 2 запроса, загрузите имя изображения и установите user_id на идентификатор пользователя, который, вероятно, из ur сессия.

var = file_before_upload_name: filename // here use the sytax that Uploadify uses to capture the name of the file 
    var = file_after_upload_name: filename // here use the sytax that Uploadify uses to capture the name of the file 

затем на aftercomplete обратного вызова использовать Ajax запрос и установить

UID: // UID из сеанса перед: file_before_upload_name, после: file_after_upload_name

в Аякса ваши запросы будут выглядеть например

mysql_queries("INSERT INTO `tbl-projects` SET `user_id` = {$_POST['uid']}, `file` = {$_POST['after']}"); 

//another query here to set the data to your other table that relates to tbl-projects 
+0

Никогда не вставляйте '$ _POST' поля в запросе, как это. Вы только что создали ошибку SQL-инъекции. Лучше использовать 'mysql_real_escape_string' на всех входах или использовать существующий API баз данных, который« связывает »значения со строкой SQL. – vdboor

+0

это был пример того, как это сделать, я уверен, что он знает, что он должен дезинформировать свои данные перед обновлением до базы данных = P – Eli

+0

все в порядке, я не собирался оставлять свой сайт открытым для атаки, это принцип нужной мне настройки кода, индивидуальный синтаксис прекрасен :) –

1
+0

, как ваше прохождение изображения имя uploadify.php? = Imagename не будет работать. Если вы передаете какие-либо переменные, вам нужно использовать метод scriptData в моем ответе выше. Кроме того, наши методы одинаковы. –

+0

Да, вы можете использовать scriptDate true, но мой способ тоже работает ... – rronyy

+0

, и это не «uploadify.php? = Imagename», это должно быть «uploadify.php? Image = imagename». попробуйте мой пример, это сработало для меня, и это просто – rronyy

Смежные вопросы