【问题标题】:uploadify is tempermental? unable to list newly uploaded files in database!uploadify 喜怒无常?无法在数据库中列出新上传的文件!
【发布时间】:2010-01-29 12:52:49
【问题描述】:

我一直在尝试使用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>

上传.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.';
        // }

    }

?>

非常感谢!

【问题讨论】:

  • 当你打印查询时,它有那个信息吗?

标签: php jquery mysql uploadify


【解决方案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'];

【讨论】:

    【解决方案2】:

    可能是 php 错误?第一行...

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

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

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

    这将解释为什么 mysql_query 没有运行,因为数据库连接没有建立

    【讨论】:

    • 我已经改了...什么也没发生!
    • 您是否尝试过手动运行脚本(从地址栏)并注释掉文件上传代码,只是为了检查 mysql 查询...
    【解决方案3】:

    你的代码有一些错误,因为在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。所以,在你的uploadify.php文件中使用$_POST['id'],或者更改uploadify js中的方法:

    'method' : 'GET'
    

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

    最后一点,在uploadify.php 你可以这样做:

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

    确保client_id 包含有效值。这比直接转义要好,因为你要确保它只包含整数,而不是其他值。

    【讨论】:

      【解决方案4】:

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

      比你

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-04
        • 2023-03-29
        相关资源
        最近更新 更多