上传JQuery& PHP / MySQL - 上传时更改文件名

时间:2011-01-14 09:28:23

标签: php jquery mysql database uploadify

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

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

我知道我有点来回蹦蹦跳跳,我需要知道如何做到这一点。要更新的两个数据库表,一个在表单提交上,另一个在文件上载中。我需要将项目名称和ID传递给uploadify上传脚本。

SOLUTION:

我必须使用以下uploadify方法将项目ID发送到uploadify脚本,之前已使用pid结果填充变量mysql_insert_id

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

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

$pid = $_POST['pid'];

然后在此脚本中运行select以获取数据库所需的数据(项目别名)并在上传之前将其添加到文件名中:

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

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

3 个答案:

答案 0 :(得分:3)

我不得不使用下面的uploadify方法将项目ID发送到uploadify脚本,之前填充了带有mysql_insert_id结果的变量pid:

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

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

$pid = $_POST['pid'];

然后在此脚本中运行select以获取数据库所需的数据(项目别名)并在上传之前将其添加到文件名中:

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

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

答案 1 :(得分:1)

在uploadify脚本中,有一部分提供了上载表单处理文件的语法。我手边没有脚本,但是在完成回调和完整回叫功能之前需要进行升级。

使用之前的完成并将名称附加到ajax请求,该请求将其保存到您的数据库,从那里只执行2个查询,上传图像的名称并将user_id设置为可能来自ur session的用户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, after:file_after_upload_name

在ajax中你的查询看起来像

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

答案 2 :(得分:1)