php-使用uploadify上传文件

php-使用uploadify上传文件,php,jquery,file-upload,uploadify,Php,Jquery,File Upload,Uploadify,我上传有问题。每当我在$post_id中使用字符串时,当我选择3个文件进行上载时,uploadify只上载一个文件。 但是当我为$post_id指定一个不存在的值时,比如一个不存在的会话变量$_session['something']。它将所有三个文件插入数据库。我认为这可能是$post_id的数据结构上的一个错误 if(!empty($_FILES)){ $post_id = 'aa'; $name2 = mysql_real_escape_s

我上传有问题。每当我在$post_id中使用字符串时,当我选择3个文件进行上载时,uploadify只上载一个文件。 但是当我为$post_id指定一个不存在的值时,比如一个不存在的会话变量$_session['something']。它将所有三个文件插入数据库。我认为这可能是$post_id的数据结构上的一个错误

 if(!empty($_FILES)){
            $post_id = 'aa';
            $name2 = mysql_real_escape_string($_FILES['Filedata']['name']);
            $mime2 = mysql_real_escape_string($_FILES['Filedata']['type']);
            $data2 = mysql_real_escape_string(file_get_contents($_FILES['Filedata']['tmp_name']));
            $size2 = intval($_FILES['Filedata']['size']);



            $db->query("INSERT INTO tbl_files SET post_id='$post_id', filename='$name2', file_data='$data2', mime_type_id='$mime2'");



    }
我试图回显其余的数据,但它们似乎只存储普通字符串。所以$post_id字符串也应该起作用

echo $_FILES['Filedata']['name'];

如果您正在使用会话,请检查您是否已启动会话,即会话_start()

如果要将post_id从uploadify函数传递到php文件,可以使用scriptData,这在下面的函数中提到

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
    $(document).ready(function(){
    //uploadify function
    $("#file_upload").uploadify({
        'uploader': 'uploadify.swf',
        'script': 'uploadify.php',
        'cancelImg': 'cancel.png',
        'folder': 'photos', //folder where images to be uploaded
        'auto': false, // use for auto upload
        'multi': true,
        'queueSizeLimit': 6,
        'buttonImg': 'images/upload.png',
        'width': '106',
        'height': '33',
        'wmode': 'transparent',
        'method': 'POST',
        'scriptData': {'myid':post_id}, //you can post the id here
        'onQueueFull': function(event, queueSizeLimit) {
            alert("Please don't put anymore files in me! You can upload " + queueSizeLimit + " files at once");
            return false;
        },
        'onComplete': function(event, ID, fileObj, response, data) {
            $("#uploadfiles").append(response+",");
        },
        'onAllComplete': function(response, data) {
            showAll();
        }
    });
</script>

试试这个,它应该能像你期望的那样工作

 $tblQry = 'INSERT INTO tbl_files ';
 $tblQry .= 'SET         
        post_id                 = "' .$_SESSION['post_id'] . '",
        filename                = "' .$name2. '",
        file_data               = "' .$data2.'",
        mime_type_id            = "' .$mime2.'"';
  $db->query($tblQry);

刚刚遇到这个问题。Flash不使用浏览器中设置的cookie,因此您需要将会话id作为post变量传递到Flash脚本中,然后根据upload.php脚本中的post值设置cookie值。见:


$post\u id是主键,因此请单独插入其余字段而不是$post\u id号,post id是外键。它是附加文件的帖子的id。比如电子邮件和附件之间的关系。什么是$post_id?您是否从uploadify函数中获取post_id callpost id存储在会话变量I have session auto start in php.ini中。我是否需要将其传递给uploadify函数调用以访问它?我如何做?这可能会起作用,但我只知道在发布到主表后要发布的值。我将使用最后插入的id作为值。如果我只能在调用uploadifyUpload()函数时发布内容,这可能会起作用,因为这是我唯一可以访问所需值的时间。不幸的是,它仍然不起作用。这真的很烦人,它应该已经起作用了。我的意思是,为什么可以在另一个php文件上访问的会话不能在另一个php文件上工作,真的很奇怪。这可能是uploadify上的错误。请使用session_start();在这个文件的顶部
 $tblQry = 'INSERT INTO tbl_files ';
 $tblQry .= 'SET         
        post_id                 = "' .$_SESSION['post_id'] . '",
        filename                = "' .$name2. '",
        file_data               = "' .$data2.'",
        mime_type_id            = "' .$mime2.'"';
  $db->query($tblQry);