2011-01-14 55 views
3

我使用Uploadify作为表单的一部分。让我给你一些背景,这可能会有所帮助。我有一个表单,用户可以将“项目”添加到网站。首先他们输入项目名称和描述。在提交时,这会更新一个名为“project”的PHP/MySQL数据库表并给出一个ID。Uploadify JQuery和PHP/MySQL - 更改上传文件名

用户可以将文件上传到服务器上的某个位置。我希望将项目名称添加到上传文件名的起始位置,并在上载开始前添加项目ID(我需要添加到数据库),然后上载完成时将文件详细信息添加到数据库表“image” - 通过项目ID链接到“项目”。

我知道我有点反弹,我需要知道如何做到这一点。两个数据库表要更新,一个用于表单提交,一个用于文件上传。我需要将项目名称和ID传递给uploadify上传脚本。

SOLUTION:

我不得不使用uploadify方法下的项目ID发送到uploadify脚本,此前充满变数pidmysql_insert_id结果:

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

然后我可以使用一个简单的帖子在PHP uploadify脚本中接收pid变量:

$pid = $_POST['pid']; 

就在那时运行选择此脚本中获得我所需要的数据库(项目别名)的数据,并上传前将其添加到文件名的问题:

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

希望这将有助于在人未来。

回答

3

我不得不使用下面的uploadify方法发送项目ID到up loadify脚本,此前充满变量PID与mysql_insert_id结果:

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

然后我可以用一个简单的职位收到的PHP uploadify脚本的PID变量:

$pid = $_POST['pid']; 

这是当时的事情运行选择此脚本中获得我所需要的数据库(项目别名)的数据,并将其添加到文件名上载前:

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

充满希望这将有助于未来的人们。

1

在uploadify脚本中有一部分给出了上传表单处理文件的语法。我手边没有脚本,但是在完成回调之前以及完整的回拨功能中进行了修饰。

使用before完成并将该名称追加到ajax请求中,该请求将其保存到数据库,从那里只执行2个查询,上传图像的名称并将user_id设置为用户的ID,可能来自于该用户会话。

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`,或者使用将值“绑定”到SQL字符串的现有数据库API。 – vdboor 2011-01-14 10:38:46

+0

这是一个如何去做的例子,我敢肯定他知道他应该在更新到数据库之前清理他的数据= P – Eli 2011-01-14 10:54:10

+0

没关系,我不打算离开我的网站公开攻击,这是原则我需要的代码设置,单个语法很好:) – 2011-01-14 15:51:45