uploadify是不是很温和?无法在数据库中列出新上传的文件!

时间:2010-01-29 12:52:49

标签: php jquery mysql uploadify

我一直在努力使uploadify脚本无济于事......它将所有文件正确上传到指定的文件夹,但没有通过mysql添加上传的详细信息。

任何我可能犯错误的想法?请帮忙。

manage.php

  <script type="text/javascript"> 
    $(document).ready(function() {
        $("#uploadify").uploadify({
            'uploader'       : 'resources/uploadify.swf',
            'script'         : 'resources/uploadify.php',
            'folder'         : 'files',
            'queueID'        : 'fileQueue',
            'auto'           : true,
            'onAllComplete'  : function(){ alert("Thank you. All files have been uploaded successfully."); },
            'multi'          : true
        });
    });
    </script>
  <form method="post" action="<?php echo $_SERVER['PHP_SELF'] . '?id=' . intval($client_id); ?>">
    <p>
         <b>File Upload</b></p>
<div id="fileQueue"></div>
<input type="file" name="uploadify" id="uploadify" />
<p><a href="javascript:jQuery('#uploadify').uploadifyClearQueue()" class="form">Cancel all uploads</a></p>
<a href="#viewFiles" class="form" rel="facebox">View files</a>

<div id="viewFiles" style="display:none;" rel="facebox"> 
                   <div style="width:300px; height: 300px;"></div>
</div>

    </p>
</form>

uploadify.php

<?php require_once('../Connections/speedycms.php); 

if (!empty($_FILES)) {
    $tempFile = $_FILES['Filedata']['tmp_name'];
    $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
    $targetFile =  str_replace('//','/',$targetPath) . $_FILES['Filedata']['name'];

    $fileName = $_FILES['uploadify']['name'];
    $fileSize = $_FILES['uploadify']['size'];
    $fileType = $_FILES['uploadify']['type'];

        $client_id = mysql_real_escape_string($_GET['id']);

    // $fileTypes  = str_replace('*.','',$_REQUEST['fileext']);
    // $fileTypes  = str_replace(';','|',$fileTypes);
    // $typesArray = split('\|',$fileTypes);
    // $fileParts  = pathinfo($_FILES['Filedata']['name']);

    // if (in_array($fileParts['extension'],$typesArray)) {
        // Uncomment the following line if you want to make the directory if it doesn't exist
        // mkdir(str_replace('//','/',$targetPath), 0755, true);

        move_uploaded_file($tempFile,$targetFile);
        echo "1";

        mysql_query("
INSERT INTO tbl_accidentfiles SET client_id='$client_id', name='${fileName}', path='${targetFile}', size='$fileSize', content_type='${content_type}'");

    // } else {


//  echo 'Invalid file type.';
        // }

    }

?>
非常感谢!

4 个答案:

答案 0 :(得分:1)

flash脚本调用的是uploadify.php文件,而不是manage.php页面上的表单。

尝试更改:

$fileName = $_FILES['uploadify']['name'];
$fileSize = $_FILES['uploadify']['size'];
$fileType = $_FILES['uploadify']['type'];

为:

$fileName = $_FILES['Filedata']['name'];
$fileSize = $_FILES['Filedata']['size'];
$fileType = $_FILES['Filedata']['type'];

答案 1 :(得分:0)

也许是php错误?第一行...

<?php require_once('../Connections/speedycms.php); 

(缺少单引号),需要......

<?php require_once('../Connections/speedycms.php'); 

这将解释为什么mysql_query不能运行,因为不会设置数据库连接

答案 2 :(得分:0)

您的代码有一些错误,因为在uploadify.php中您有:

$client_id = mysql_real_escape_string($_GET['id']);

但是你没有在uploadify js代码中传递它。为此,请使用以下代码:

$("#uploadify").uploadify({
  'uploader'       : 'resources/uploadify.swf',
  'script'         : 'resources/uploadify.php',
  'folder'         : 'files',
  'queueID'        : 'fileQueue',
  'auto'           : true,
  'onAllComplete'  : function(){ alert("Thank you. All files have been uploaded successfully."); },
  'multi'          : true,
  scriptData       : {'id': '<?php echo intval($client_id); ?>'}
});

在最新的uploadify中,scripData的默认方法是POST。因此,在$_POST['id']文件中使用uploadify.php,或更改uploadify js中的方法:

'method' : 'GET'

See here获取更完整的参数。我希望它现在有效。

最后请注意,在uploadify.php中,您可以这样做:

$client_id = intval($_GET['id']);

确保client_id包含有效值。它比逃避它更好,因为你确保它只包含整数,而不是其他值。

答案 3 :(得分:0)

Thanx的帖子。 实际上我的客户需要上传一个旅游套餐的图像数量。我想将它们保存在数据库中。为此,我必须使用多个上传器。 所以我决定为通过普通包ID链接的图像创建一个单独的表。 我有一个想法,插入带有图像和相应id字段的表

比你